package com.google.android.m4b.maps.ay;

import com.google.common.collect.Lists;
import java.util.LinkedList;
import java.util.List;

public final class e
{
  private static c a(j paramj, b paramb, int paramInt, List<Object> paramList, c paramc)
  {
    if (paramc == null);
    for (c localc = new c((byte)0); ; localc = paramc)
    {
      if (paramj.e() < 3)
        return localc.a(e.c.a.a, null, null, 0, 0, null, null);
      if (paramInt < paramj.c)
      {
        int i = paramj.j(paramInt);
        int j = paramj.d(i);
        int k = paramj.e(i);
        a.b localb = paramj.f(i);
        switch (1.a[localb.ordinal()])
        {
        default:
        case 5:
        case 1:
        case 2:
        case 3:
        case 4:
        case 6:
        }
        int n;
        do
        {
          int i2;
          do
          {
            int i5;
            do
            {
              int i7;
              do
              {
                while (true)
                {
                  paramInt++;
                  break;
                  paramb.a(j, i, k);
                }
                int i6 = paramb.a(j, i, localb);
                if (i6 != -1)
                  return localc.a(e.c.a.c, paramj, paramb, i, i6, localb, paramList);
                i7 = paramb.b(i, k, localb);
              }
              while (i7 == -1);
              return localc.a(e.c.a.c, paramj, paramb, i, i7, localb, paramList);
              int i4 = paramb.a(i, k, localb);
              if (i4 != -1)
                return localc.a(e.c.a.c, paramj, paramb, i, i4, localb, paramList);
              i5 = paramb.b(j, i, localb);
            }
            while (i5 == -1);
            return localc.a(e.c.a.c, paramj, paramb, i, i5, localb, paramList);
            int i3 = paramb.b(i);
            return localc.a(e.c.a.c, paramj, paramb, i, i3, localb, paramList);
            int i1 = paramb.b(i, k, localb);
            if (i1 != -1)
              return localc.a(e.c.a.c, paramj, paramb, i, i1, localb, paramList);
            i2 = paramb.b(j, i, localb);
          }
          while (i2 == -1);
          return localc.a(e.c.a.c, paramj, paramb, i, i2, localb, paramList);
          int m = paramb.b(j, i, localb);
          if (m != -1)
            return localc.a(e.c.a.c, paramj, paramb, i, m, localb, paramList);
          n = paramb.b(i, k, localb);
        }
        while (n == -1);
        return localc.a(e.c.a.c, paramj, paramb, i, n, localb, paramList);
      }
      return localc.a(e.c.a.b, paramj, null, 0, 0, null, null);
    }
  }

  public static k a(d paramd)
  {
    int i = 0;
    while (true)
    {
      c localc;
      int j;
      Object localObject;
      b localb1;
      int[] arrayOfInt;
      int k;
      int m;
      int n;
      int i1;
      a.b localb2;
      try
      {
        localg = paramd.f();
        if (localg.a() == 0)
        {
          if (localg.a < 3)
            return k.a();
          if (localg.a == 3)
          {
            k localk = k.a(localg.b());
            localk.a(0, 1, 2);
            return localk;
          }
        }
      }
      catch (b localb)
      {
        g localg;
        throw localb;
        return a(localg.c(), null);
        localc = new c(localg);
        j = localc.d();
        if (j == 0)
        {
          localObject = localc;
          return a((j)localObject, null);
        }
        localb1 = new b(localc);
        arrayOfInt = new int[j * 2];
        k = 0;
        if (k >= localc.c)
          break label447;
        m = localc.j(k);
        n = localc.d(m);
        i1 = localc.e(m);
        localb2 = localc.f(m);
        switch (1.a[localb2.ordinal()])
        {
        case 1:
          localb1.a(n, m, localb2);
          localb1.b(m, i1, localb2);
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        }
      }
      catch (Exception localException)
      {
        throw new b("Error when tessellating polygon: " + localException.getMessage(), localException);
      }
      localb1.a(m, i1, localb2);
      localb1.b(n, m, localb2);
      break label457;
      int i2 = localb1.a(m);
      if (localc.c(m, i2))
      {
        arrayOfInt[i] = m;
        arrayOfInt[(i + 1)] = i2;
        i += 2;
        if (i == j * 2)
          localObject = localc.a(arrayOfInt);
      }
      else
      {
        localb1.b(n, m, i1);
        break label457;
        localb1.b(m, i1, localb2);
        localb1.b(n, m, localb2);
        break label457;
        localb1.a(n, m, i1);
        break label457;
        localb1.b(n, m, localb2);
        localb1.b(m, i1, localb2);
        break label457;
        label447: throw new NullPointerException("Tesselation could not cut all holes open.");
        label457: k++;
      }
    }
  }

  private static k a(j paramj, List<Object> paramList)
  {
    c localc1 = a(paramj, new b(paramj), 0, null, null);
    switch (1.b[localc1.a.ordinal()])
    {
    default:
      throw new a("Unknown subdivide result in tessellation");
    case 1:
      return k.a();
    case 2:
      k localk2 = k.a(localc1.b);
      a(localc1.b, localk2, null, 0);
      return localk2;
    case 3:
    }
    j localj1 = localc1.b;
    b localb1 = localc1.c;
    int i = localc1.d;
    int j = localc1.e;
    a.b localb2 = localc1.f;
    List localList1 = localc1.g;
    k localk1 = k.a(localj1);
    LinkedList localLinkedList = Lists.newLinkedList();
    int k = 0;
    int m = 0;
    Object localObject1 = null;
    Object localObject2 = null;
    Object localObject3 = null;
    Object localObject4 = localList1;
    Object localObject5 = localb2;
    Object localObject6 = localb1;
    Object localObject7 = localj1;
    int n = j;
    int i1 = i;
    int i2;
    int i3;
    label264: int i4;
    int i5;
    int i14;
    int i10;
    int i11;
    int i13;
    int i12;
    if (k == 0)
    {
      if (localObject4 != null)
      {
        double[] arrayOfDouble = new double[4];
        arrayOfDouble[0] = ((j)localObject7).b(i1);
        arrayOfDouble[1] = ((j)localObject7).c(i1);
        arrayOfDouble[2] = ((j)localObject7).b(n);
        arrayOfDouble[3] = ((j)localObject7).c(n);
        ((List)localObject4).add(arrayOfDouble);
      }
      if (i1 > n)
      {
        i2 = n;
        if (i1 <= n)
          break label482;
        i3 = i1;
        i4 = 0;
        i5 = 0;
        if (((j)localObject7).g(i2, i3) != 0)
          break label489;
        i14 = 1;
        int i55 = ((j)localObject7).d(i3);
        int i56 = ((j)localObject7).e(i3);
        i10 = i2;
        i11 = i56;
        i13 = i2;
        i12 = i55;
      }
    }
    while (true)
    {
      label319: Object localObject11;
      Object localObject8;
      Object localObject9;
      Object localObject10;
      if (i14 != 0)
      {
        localObject11 = ((j)localObject7).d(i13, i12);
        localObject8 = ((j)localObject7).d(i11, i10);
        localObject9 = new b((m)localObject11);
        localObject10 = new b((m)localObject8);
        localk1.b();
      }
      label373: Object localObject12;
      Object localObject13;
      while (true)
      {
        localObject12 = a((j)localObject11, (b)localObject9, i4, (List)localObject4, (c)localObject3);
        localObject13 = a((j)localObject8, (b)localObject10, i5, (List)localObject4, (c)localObject2);
        if (localObject1 == null)
          break label1749;
        int i37 = ((j)localObject11).e();
        if ((((c)localObject12).h == null) || (((c)localObject12).h.length < i37))
          ((c)localObject12).h = new int[i37];
        for (int i38 = 0; i38 < i37; i38++)
          ((c)localObject12).h[i38] = localObject1[(i13 + i38)];
        i2 = i1;
        break;
        label482: i3 = n;
        break label264;
        label489: int i6 = ((j)localObject7).d(i3);
        if (((j)localObject7).g(i2, i6) == 0)
        {
          i14 = 1;
          i12 = ((j)localObject7).d(i3);
          i10 = i2;
          i11 = i3;
          i13 = i2;
          break label319;
        }
        int i7 = ((j)localObject7).e(i3);
        if (((j)localObject7).g(i2, i7) == 0)
        {
          i14 = 1;
          int i54 = ((j)localObject7).e(i3);
          i10 = i2;
          i11 = i54;
          i13 = i2;
          i12 = i3;
          break label319;
        }
        int i8 = ((j)localObject7).d(i2);
        if (((j)localObject7).g(i8, i3) == 0)
        {
          i14 = 1;
          i10 = ((j)localObject7).d(i2);
          i11 = i3;
          i13 = i2;
          i12 = i3;
          break label319;
        }
        int i9 = ((j)localObject7).e(i2);
        if (((j)localObject7).g(i9, i3) != 0)
          break label2371;
        i14 = 1;
        int i53 = ((j)localObject7).e(i2);
        i10 = i2;
        i11 = i3;
        i13 = i53;
        i12 = i3;
        break label319;
        j localj2 = ((j)localObject7).d(i2, i3);
        b localb3 = ((b)localObject6).a(localj2, i2, i3);
        int i15 = localj2.h(i1 - i2, 0);
        j localj3 = ((j)localObject7).d(i3, i2);
        b localb4 = ((b)localObject6).a(localj3, i3, i2);
        int i16 = -1 + (i3 - i2);
        int i17;
        if (n <= i2)
        {
          i17 = n;
          label770: if (i1 > i2)
            break label893;
        }
        int i19;
        int i20;
        int i21;
        label893: for (int i18 = i1; ; i18 = i1 - i16)
        {
          i19 = localj3.h(i18, 0);
          i20 = ((j)localObject7).d(i1);
          i21 = ((j)localObject7).e(i1);
          switch (1.a[localObject5.ordinal()])
          {
          default:
            localObject10 = localb4;
            localObject9 = localb3;
            localObject8 = localj3;
            localObject11 = localj2;
            i5 = i19;
            i4 = i15;
            break label373;
            i17 = n - i16;
            break label770;
          case 5:
          case 3:
          case 1:
          case 2:
          case 4:
          case 6:
          }
        }
        throw new NullPointerException("Impossible case in cutAndTessellate.");
        localb3.d(n - i2, i1 - i2);
        localb4.d(i17, i18);
        localObject10 = localb4;
        localObject9 = localb3;
        localObject8 = localj3;
        localObject11 = localj2;
        i5 = i19;
        i4 = i15;
        continue;
        if ((i20 >= i2) && (i20 <= i3))
        {
          int i51 = i15 + 1;
          if (localj3.f(i18) != a.b.f)
            throw new NullPointerException("Impossible case in cutAndTessellate.");
          int i52 = i19 + 1;
          localObject9 = localb3;
          i5 = i52;
          localObject10 = localb4;
          localObject11 = localj2;
          i4 = i51;
          localObject8 = localj3;
        }
        else
        {
          if (localj2.f(i1 - i2) != a.b.f)
            throw new NullPointerException("Impossible case in cutAndTessellate.");
          int i49 = i15 + 1;
          int i50 = i19 + 1;
          localObject8 = localj3;
          i4 = i49;
          localObject9 = localb3;
          i5 = i50;
          localObject10 = localb4;
          localObject11 = localj2;
          continue;
          if ((i20 >= i2) && (i20 <= i3))
          {
            if (localj2.f(i1 - i2) != a.b.f)
              throw new NullPointerException("Impossible case in cutAndTessellate.");
            int i47 = i15 + 1;
            int i48 = i19 + 1;
            localObject8 = localj3;
            i4 = i47;
            localObject9 = localb3;
            i5 = i48;
            localObject10 = localb4;
            localObject11 = localj2;
          }
          else
          {
            int i45 = i15 + 1;
            if (localj3.f(i18) != a.b.f)
              throw new NullPointerException("Impossible case in cutAndTessellate.");
            int i46 = i19 + 1;
            localObject9 = localb3;
            i5 = i46;
            localObject10 = localb4;
            localObject11 = localj2;
            i4 = i45;
            localObject8 = localj3;
            continue;
            if ((i20 >= i2) && (i20 <= i3))
            {
              if (((b)localObject6).c(i20, i1))
              {
                localb3.d(n - i2, i1 - i2);
                if (localj3.f(i18) != a.b.f)
                  throw new NullPointerException("Impossible case in cutAndTessellate.");
                int i44 = i19 + 1;
                localObject9 = localb3;
                localObject8 = localj3;
                i5 = i44;
                i4 = i15;
                localObject10 = localb4;
                localObject11 = localj2;
              }
              else
              {
                if (localj2.f(i1 - i2) != a.b.f)
                  throw new NullPointerException("Impossible case in cutAndTessellate.");
                int i42 = i15 + 1;
                int i43 = i19 + 1;
                localObject8 = localj3;
                i4 = i42;
                localObject9 = localb3;
                i5 = i43;
                localObject10 = localb4;
                localObject11 = localj2;
              }
            }
            else if (((b)localObject6).c(i20, i1))
            {
              if (localj2.f(i1 - i2) != a.b.f)
                throw new NullPointerException("Impossible case in cutAndTessellate.");
              int i41 = i15 + 1;
              localb4.d(i17, i18);
              localObject9 = localb3;
              localObject8 = localj3;
              i5 = i19;
              i4 = i41;
              localObject10 = localb4;
              localObject11 = localj2;
            }
            else
            {
              if (localj3.f(i18) != a.b.f)
                throw new NullPointerException("Impossible case in cutAndTessellate.");
              int i39 = i19 + 1;
              int i40 = i15 + 1;
              localObject8 = localj3;
              i4 = i40;
              localObject9 = localb3;
              i5 = i39;
              localObject10 = localb4;
              localObject11 = localj2;
              continue;
              if ((i21 >= i2) && (i21 <= i3))
              {
                if (localb3.c(i21 - i2, i1 - i2))
                {
                  if (localb3.b(i21 - i2, i1 - i2, a.b.f) != -1)
                    throw new NullPointerException("Impossible case in cutAndTessellate.");
                }
                else
                  throw new NullPointerException("Impossible case in cutAndTessellate.");
              }
              else
              {
                int i22;
                if (i21 <= i2)
                {
                  i22 = i21;
                  if (!localb4.c(i22, i18))
                    break label1700;
                  if (i21 > i2)
                    break label1690;
                }
                while (true)
                {
                  if (localb4.b(i21, i18, a.b.f) == -1)
                    break label1710;
                  throw new NullPointerException("Impossible case in cutAndTessellate.");
                  i22 = i21 - i16;
                  break;
                  label1690: i21 -= i16;
                }
                label1700: throw new NullPointerException("Impossible case in cutAndTessellate.");
              }
              label1710: int i23 = i15 + 1;
              int i24 = i19 + 1;
              localObject8 = localj3;
              i4 = i23;
              localObject9 = localb3;
              i5 = i24;
              localObject10 = localb4;
              localObject11 = localj2;
            }
          }
        }
      }
      label1749: ((c)localObject12).h = null;
      ((c)localObject12).i = (m + i13);
      int i25 = ((j)localObject8).e();
      if ((((c)localObject13).h == null) || (((c)localObject13).h.length < i25))
        ((c)localObject13).h = new int[i25];
      if (localObject1 != null)
      {
        int[] arrayOfInt3 = ((c)localObject13).h;
        int i33 = i10 + 1;
        System.arraycopy(localObject1, 0, arrayOfInt3, 0, i33);
        int i34 = localObject1.length;
        if (i11 < i34)
        {
          int[] arrayOfInt4 = ((c)localObject13).h;
          int i35 = i10 + 1;
          int i36 = -1 + (i25 - i10);
          System.arraycopy(localObject1, i11, arrayOfInt4, i35, i36);
        }
        if ((((c)localObject12).a != e.c.a.c) || (((c)localObject13).a == e.c.a.c))
          break label2356;
      }
      while (true)
      {
        Object localObject15;
        switch (1.b[localObject13.a.ordinal()])
        {
        default:
          throw new a("Unknown subdivide result in tessellation");
          for (int i26 = 0; i26 < i10 + 1; i26++)
            ((c)localObject13).h[i26] = (i26 + m);
          int i27 = m + (-1 + (i11 - i10));
          for (int i28 = i10 + 1; i28 < i25; i28++)
            ((c)localObject13).h[i28] = (i28 + i27);
        case 1:
          localObject15 = localObject13;
        case 2:
        case 3:
        }
        while (true)
          switch (1.b[localObject12.a.ordinal()])
          {
          default:
            throw new a("Unknown subdivide result in tessellation");
            a(((c)localObject13).b, localk1, ((c)localObject13).h, ((c)localObject13).i);
            localObject15 = localObject13;
            continue;
            localLinkedList.add(localObject13);
            localObject15 = null;
          case 3:
          case 2:
          case 1:
          }
        j localj5 = ((c)localObject12).b;
        b localb7 = ((c)localObject12).c;
        int i31 = ((c)localObject12).d;
        int i32 = ((c)localObject12).e;
        a.b localb8 = ((c)localObject12).f;
        List localList3 = ((c)localObject12).g;
        int[] arrayOfInt2 = ((c)localObject12).h;
        m = ((c)localObject12).i;
        localObject1 = arrayOfInt2;
        localObject2 = localObject12;
        localObject3 = localObject15;
        localObject4 = localList3;
        localObject5 = localb8;
        localObject6 = localb7;
        localObject7 = localj5;
        n = i32;
        i1 = i31;
        break;
        a(((c)localObject12).b, localk1, ((c)localObject12).h, 0);
        if (!localLinkedList.isEmpty())
        {
          c localc2 = (c)localLinkedList.poll();
          j localj4 = localc2.b;
          b localb5 = localc2.c;
          int i29 = localc2.d;
          int i30 = localc2.e;
          a.b localb6 = localc2.f;
          List localList2 = localc2.g;
          int[] arrayOfInt1 = localc2.h;
          m = localc2.i;
          localObject1 = arrayOfInt1;
          localObject2 = localObject12;
          localObject3 = localObject15;
          localObject4 = localList2;
          localObject5 = localb6;
          localObject6 = localb5;
          localObject7 = localj4;
          n = i30;
          i1 = i29;
          break;
        }
        k = 1;
        localObject2 = localObject12;
        localObject3 = localObject15;
        break;
        return localk1;
        label2356: Object localObject14 = localObject13;
        localObject13 = localObject12;
        localObject12 = localObject14;
      }
      label2371: i10 = i2;
      i11 = i3;
      i12 = i3;
      i13 = i2;
      i14 = 0;
    }
  }

  private static void a(j paramj, k paramk, int[] paramArrayOfInt, int paramInt)
  {
    int i = paramj.e();
    if (i < 3)
      return;
    m localm = paramj.c();
    int j = paramj.j(0);
    int k = paramj.j(1);
    localm.b(new int[] { j });
    localm.b(new int[] { k });
    int m = 2;
    label62: int n;
    if (m < i)
    {
      n = paramj.j(m);
      if (!paramj.k(m))
        break label175;
      int i8;
      for (int i7 = localm.f(); (localm.c > 1) && (paramj.a(n, k, i7) > 0.0D); i7 = i8)
      {
        a(paramk, n, k, i7, paramArrayOfInt, paramInt);
        localm.b();
        i8 = localm.f();
        k = i7;
      }
      localm.b(new int[] { n });
    }
    while (true)
    {
      m++;
      k = n;
      break label62;
      break;
      label175: if (paramj.l(m))
      {
        int i4 = localm.f();
        int i5 = k;
        while ((localm.c > 1) && (paramj.a(i4, i5, n) > 0.0D))
        {
          a(paramk, i4, i5, n, paramArrayOfInt, paramInt);
          localm.b();
          int i6 = localm.f();
          i5 = i4;
          i4 = i6;
        }
        localm.b(new int[] { n });
      }
      else
      {
        int i1 = localm.j(0);
        int i2 = 1;
        if (i2 < localm.c)
        {
          int i3 = localm.j(i2);
          if (paramj.a(i1, i3, n) < 0.0D)
            a(paramk, n, i3, i1, paramArrayOfInt, paramInt);
          while (true)
          {
            i2++;
            i1 = i3;
            break;
            a(paramk, i1, i3, n, paramArrayOfInt, paramInt);
          }
        }
        localm.a();
        localm.b(new int[] { i1 });
        localm.b(new int[] { n });
      }
    }
  }

  private static void a(k paramk, int paramInt1, int paramInt2, int paramInt3, int[] paramArrayOfInt, int paramInt4)
  {
    if (paramArrayOfInt != null)
    {
      paramk.a(paramArrayOfInt[paramInt1], paramArrayOfInt[paramInt2], paramArrayOfInt[paramInt3]);
      return;
    }
    paramk.a(paramInt1 + paramInt4, paramInt2 + paramInt4, paramInt3 + paramInt4);
  }

  public static d b(d paramd)
  {
    if (paramd.b())
      return d.a;
    if (paramd.c())
      return d.b;
    if (paramd.d())
      return d.d;
    if (paramd.e())
      return d.c;
    return null;
  }

  public static final class a extends e.b
  {
    public a(String paramString)
    {
      super(null);
    }
  }

  public static class b extends Exception
  {
    public b(String paramString, Throwable paramThrowable)
    {
      super(paramThrowable);
    }
  }

  static final class c
  {
    public a a;
    public j b;
    public b c;
    public int d;
    public int e;
    public a.b f;
    public List<Object> g;
    public int[] h;
    public int i;

    public final c a(a parama, j paramj, b paramb, int paramInt1, int paramInt2, a.b paramb1, List<Object> paramList)
    {
      this.a = parama;
      this.b = paramj;
      this.c = paramb;
      this.d = paramInt1;
      this.e = paramInt2;
      this.f = paramb1;
      this.g = paramList;
      return this;
    }

    public static enum a
    {
      static
      {
        a[] arrayOfa = new a[3];
        arrayOfa[0] = a;
        arrayOfa[1] = b;
        arrayOfa[2] = c;
      }
    }
  }

  public static enum d
  {
    static
    {
      d[] arrayOfd = new d[4];
      arrayOfd[0] = a;
      arrayOfd[1] = b;
      arrayOfd[2] = c;
      arrayOfd[3] = d;
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.google.android.m4b.maps.ay.e
 * JD-Core Version:    0.6.2
 */