package com.google.zxing.oned.rss.expanded;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.DecodeHintType;
import com.google.zxing.FormatException;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.ResultPoint;
import com.google.zxing.common.BitArray;
import com.google.zxing.oned.rss.AbstractRSSReader;
import com.google.zxing.oned.rss.DataCharacter;
import com.google.zxing.oned.rss.FinderPattern;
import com.google.zxing.oned.rss.RSSUtils;
import com.google.zxing.oned.rss.expanded.decoders.AbstractExpandedDecoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public final class RSSExpandedReader extends AbstractRSSReader
{
  private static final int[] EVEN_TOTAL_SUBSET;
  private static final int[][] FINDER_PATTERNS;
  private static final int[][] FINDER_PATTERN_SEQUENCES = arrayOfInt;
  private static final int FINDER_PAT_A = 0;
  private static final int FINDER_PAT_B = 1;
  private static final int FINDER_PAT_C = 2;
  private static final int FINDER_PAT_D = 3;
  private static final int FINDER_PAT_E = 4;
  private static final int FINDER_PAT_F = 5;
  private static final int[] GSUM;
  private static final int MAX_PAIRS = 11;
  private static final int[] SYMBOL_WIDEST = { 7, 5, 4, 3, 1 };
  private static final int[][] WEIGHTS;
  private final List<ExpandedPair> pairs = new ArrayList(11);
  private final List<ExpandedRow> rows = new ArrayList();
  private final int[] startEnd = new int[2];
  private boolean startFromEven;

  static
  {
    EVEN_TOTAL_SUBSET = new int[] { 4, 20, 52, 104, 204 };
    int[] arrayOfInt1 = new int[5];
    arrayOfInt1[1] = 348;
    arrayOfInt1[2] = 1388;
    arrayOfInt1[3] = 2948;
    arrayOfInt1[4] = 3988;
    GSUM = arrayOfInt1;
    FINDER_PATTERNS = new int[][] { { 1, 8, 4, 1 }, { 3, 6, 4, 1 }, { 3, 4, 6, 1 }, { 3, 2, 8, 1 }, { 2, 6, 5, 1 }, { 2, 2, 9, 1 } };
    WEIGHTS = new int[][] { { 1, 3, 9, 27, 81, 32, 96, 77 }, { 20, 60, 180, 118, 143, 7, 21, 63 }, { 189, 145, 13, 39, 117, 140, 209, 205 }, { 193, 157, 49, 147, 19, 57, 171, 91 }, { 62, 186, 136, 197, 169, 85, 44, 132 }, { 185, 133, 188, 142, 4, 12, 36, 108 }, { 113, 128, 173, 97, 80, 29, 87, 50 }, { 150, 28, 84, 41, 123, 158, 52, 156 }, { 46, 138, 203, 187, 139, 206, 196, 166 }, { 76, 17, 51, 153, 37, 111, 122, 155 }, { 43, 129, 176, 106, 107, 110, 119, 146 }, { 16, 48, 144, 10, 30, 90, 59, 177 }, { 109, 116, 137, 200, 178, 112, 125, 164 }, { 70, 210, 208, 202, 184, 130, 179, 115 }, { 134, 191, 151, 31, 93, 68, 204, 190 }, { 148, 22, 66, 198, 172, 94, 71, 2 }, { 6, 18, 54, 162, 64, 192, 154, 40 }, { 120, 149, 25, 75, 14, 42, 126, 167 }, { 79, 26, 78, 23, 69, 207, 199, 175 }, { 103, 98, 83, 38, 114, 131, 182, 124 }, { 161, 61, 183, 127, 170, 88, 53, 159 }, { 55, 165, 73, 8, 24, 72, 5, 15 }, { 45, 135, 194, 160, 58, 174, 100, 89 } };
    int[][] arrayOfInt = new int[10][];
    arrayOfInt[0] = new int[2];
    int[] arrayOfInt2 = new int[3];
    arrayOfInt2[1] = 1;
    arrayOfInt2[2] = 1;
    arrayOfInt[1] = arrayOfInt2;
    int[] arrayOfInt3 = new int[4];
    arrayOfInt3[1] = 2;
    arrayOfInt3[2] = 1;
    arrayOfInt3[3] = 3;
    arrayOfInt[2] = arrayOfInt3;
    int[] arrayOfInt4 = new int[5];
    arrayOfInt4[1] = 4;
    arrayOfInt4[2] = 1;
    arrayOfInt4[3] = 3;
    arrayOfInt4[4] = 2;
    arrayOfInt[3] = arrayOfInt4;
    int[] arrayOfInt5 = new int[6];
    arrayOfInt5[1] = 4;
    arrayOfInt5[2] = 1;
    arrayOfInt5[3] = 3;
    arrayOfInt5[4] = 3;
    arrayOfInt5[5] = 5;
    arrayOfInt[4] = arrayOfInt5;
    int[] arrayOfInt6 = new int[7];
    arrayOfInt6[1] = 4;
    arrayOfInt6[2] = 1;
    arrayOfInt6[3] = 3;
    arrayOfInt6[4] = 4;
    arrayOfInt6[5] = 5;
    arrayOfInt6[6] = 5;
    arrayOfInt[5] = arrayOfInt6;
    int[] arrayOfInt7 = new int[8];
    arrayOfInt7[2] = 1;
    arrayOfInt7[3] = 1;
    arrayOfInt7[4] = 2;
    arrayOfInt7[5] = 2;
    arrayOfInt7[6] = 3;
    arrayOfInt7[7] = 3;
    arrayOfInt[6] = arrayOfInt7;
    int[] arrayOfInt8 = new int[9];
    arrayOfInt8[2] = 1;
    arrayOfInt8[3] = 1;
    arrayOfInt8[4] = 2;
    arrayOfInt8[5] = 2;
    arrayOfInt8[6] = 3;
    arrayOfInt8[7] = 4;
    arrayOfInt8[8] = 4;
    arrayOfInt[7] = arrayOfInt8;
    int[] arrayOfInt9 = new int[10];
    arrayOfInt9[2] = 1;
    arrayOfInt9[3] = 1;
    arrayOfInt9[4] = 2;
    arrayOfInt9[5] = 2;
    arrayOfInt9[6] = 3;
    arrayOfInt9[7] = 4;
    arrayOfInt9[8] = 5;
    arrayOfInt9[9] = 5;
    arrayOfInt[8] = arrayOfInt9;
    int[] arrayOfInt10 = new int[11];
    arrayOfInt10[2] = 1;
    arrayOfInt10[3] = 1;
    arrayOfInt10[4] = 2;
    arrayOfInt10[5] = 3;
    arrayOfInt10[6] = 3;
    arrayOfInt10[7] = 4;
    arrayOfInt10[8] = 4;
    arrayOfInt10[9] = 5;
    arrayOfInt10[10] = 5;
    arrayOfInt[9] = arrayOfInt10;
  }

  private void adjustOddEvenCounts(int paramInt)
    throws NotFoundException
  {
    int i = count(getOddCounts());
    int j = count(getEvenCounts());
    int k = i + j - paramInt;
    int m;
    int i1;
    int i2;
    int i3;
    label61: int i4;
    int i5;
    if ((i & 0x1) == 1)
    {
      m = 1;
      int n = j & 0x1;
      i1 = 0;
      if (n == 0)
        i1 = 1;
      i2 = 0;
      if (i <= 13)
        break label99;
      i3 = 1;
      i4 = 0;
      if (j <= 13)
        break label119;
      i5 = 1;
    }
    while (true)
      if (k == 1)
        if (m != 0)
        {
          if (i1 != 0)
          {
            throw NotFoundException.getNotFoundInstance();
            m = 0;
            break;
            label99: i3 = 0;
            i2 = 0;
            if (i >= 4)
              break label61;
            i2 = 1;
            i3 = 0;
            break label61;
            label119: i5 = 0;
            i4 = 0;
            if (j >= 4)
              continue;
            i4 = 1;
            i5 = 0;
            continue;
          }
          i3 = 1;
        }
    while (i2 != 0)
      if (i3 != 0)
      {
        throw NotFoundException.getNotFoundInstance();
        if (i1 == 0)
          throw NotFoundException.getNotFoundInstance();
        i5 = 1;
        continue;
        if (k == -1)
        {
          if (m != 0)
          {
            if (i1 != 0)
              throw NotFoundException.getNotFoundInstance();
            i2 = 1;
          }
          else
          {
            if (i1 == 0)
              throw NotFoundException.getNotFoundInstance();
            i4 = 1;
          }
        }
        else if (k == 0)
        {
          if (m != 0)
          {
            if (i1 == 0)
              throw NotFoundException.getNotFoundInstance();
            if (i < j)
            {
              i2 = 1;
              i5 = 1;
            }
            else
            {
              i3 = 1;
              i4 = 1;
            }
          }
          else if (i1 != 0)
          {
            throw NotFoundException.getNotFoundInstance();
          }
        }
        else
          throw NotFoundException.getNotFoundInstance();
      }
      else
      {
        increment(getOddCounts(), getOddRoundingErrors());
      }
    if (i3 != 0)
      decrement(getOddCounts(), getOddRoundingErrors());
    if (i4 != 0)
    {
      if (i5 != 0)
        throw NotFoundException.getNotFoundInstance();
      increment(getEvenCounts(), getOddRoundingErrors());
    }
    if (i5 != 0)
      decrement(getEvenCounts(), getEvenRoundingErrors());
  }

  private boolean checkChecksum()
  {
    ExpandedPair localExpandedPair1 = (ExpandedPair)this.pairs.get(0);
    DataCharacter localDataCharacter1 = localExpandedPair1.getLeftChar();
    DataCharacter localDataCharacter2 = localExpandedPair1.getRightChar();
    if (localDataCharacter2 == null)
      return false;
    int i = localDataCharacter2.getChecksumPortion();
    int j = 2;
    for (int k = 1; ; k++)
    {
      if (k >= this.pairs.size())
      {
        if (i % 211 + 211 * (j - 4) != localDataCharacter1.getValue())
          break;
        return true;
      }
      ExpandedPair localExpandedPair2 = (ExpandedPair)this.pairs.get(k);
      i += localExpandedPair2.getLeftChar().getChecksumPortion();
      j++;
      DataCharacter localDataCharacter3 = localExpandedPair2.getRightChar();
      if (localDataCharacter3 != null)
      {
        i += localDataCharacter3.getChecksumPortion();
        j++;
      }
    }
  }

  private List<ExpandedPair> checkRows(List<ExpandedRow> paramList, int paramInt)
    throws NotFoundException
  {
    int i = paramInt;
    if (i >= this.rows.size())
      throw NotFoundException.getNotFoundInstance();
    ExpandedRow localExpandedRow = (ExpandedRow)this.rows.get(i);
    this.pairs.clear();
    int j = paramList.size();
    int k = 0;
    label54: if (k >= j)
    {
      this.pairs.addAll(localExpandedRow.getPairs());
      if (isValidSequence(this.pairs))
        break label122;
    }
    while (true)
    {
      i++;
      break;
      this.pairs.addAll(((ExpandedRow)paramList.get(k)).getPairs());
      k++;
      break label54;
      label122: if (checkChecksum())
        return this.pairs;
      ArrayList localArrayList = new ArrayList();
      localArrayList.addAll(paramList);
      localArrayList.add(localExpandedRow);
      int m = i + 1;
      try
      {
        List localList = checkRows(localArrayList, m);
        return localList;
      }
      catch (NotFoundException localNotFoundException)
      {
      }
    }
  }

  private List<ExpandedPair> checkRows(boolean paramBoolean)
  {
    Object localObject;
    if (this.rows.size() > 25)
    {
      this.rows.clear();
      localObject = null;
    }
    while (true)
    {
      return localObject;
      this.pairs.clear();
      if (paramBoolean)
        Collections.reverse(this.rows);
      try
      {
        List localList = checkRows(new ArrayList(), 0);
        localObject = localList;
        if (!paramBoolean)
          continue;
        Collections.reverse(this.rows);
        return localObject;
      }
      catch (NotFoundException localNotFoundException)
      {
        while (true)
          localObject = null;
      }
    }
  }

  static Result constructResult(List<ExpandedPair> paramList)
    throws NotFoundException, FormatException
  {
    String str = AbstractExpandedDecoder.createDecoder(BitArrayBuilder.buildBitArray(paramList)).parseInformation();
    ResultPoint[] arrayOfResultPoint1 = ((ExpandedPair)paramList.get(0)).getFinderPattern().getResultPoints();
    ResultPoint[] arrayOfResultPoint2 = ((ExpandedPair)paramList.get(-1 + paramList.size())).getFinderPattern().getResultPoints();
    ResultPoint[] arrayOfResultPoint3 = new ResultPoint[4];
    arrayOfResultPoint3[0] = arrayOfResultPoint1[0];
    arrayOfResultPoint3[1] = arrayOfResultPoint1[1];
    arrayOfResultPoint3[2] = arrayOfResultPoint2[0];
    arrayOfResultPoint3[3] = arrayOfResultPoint2[1];
    return new Result(str, null, arrayOfResultPoint3, BarcodeFormat.RSS_EXPANDED);
  }

  private void findNextPair(BitArray paramBitArray, List<ExpandedPair> paramList, int paramInt)
    throws NotFoundException
  {
    int[] arrayOfInt = getDecodeFinderCounters();
    arrayOfInt[0] = 0;
    arrayOfInt[1] = 0;
    arrayOfInt[2] = 0;
    arrayOfInt[3] = 0;
    int i = paramBitArray.getSize();
    int j;
    int k;
    label53: label68: label78: int n;
    int i1;
    if (paramInt >= 0)
    {
      j = paramInt;
      if (paramList.size() % 2 == 0)
        break label145;
      k = 1;
      if (this.startFromEven)
      {
        if (k == 0)
          break label151;
        k = 0;
      }
      m = 0;
      if (j < i)
        break label157;
      n = 0;
      i1 = j;
    }
    for (int i2 = j; ; i2++)
    {
      if (i2 >= i)
      {
        throw NotFoundException.getNotFoundInstance();
        if (paramList.isEmpty())
        {
          j = 0;
          break;
        }
        j = ((ExpandedPair)paramList.get(-1 + paramList.size())).getFinderPattern().getStartEnd()[1];
        break;
        label145: k = 0;
        break label53;
        label151: k = 1;
        break label68;
        label157: if (paramBitArray.get(j));
        for (m = 0; ; m = 1)
        {
          if (m == 0)
            break label184;
          j++;
          break;
        }
        label184: break label78;
      }
      if ((m ^ paramBitArray.get(i2)) == 0)
        break label216;
      arrayOfInt[n] = (1 + arrayOfInt[n]);
    }
    label216: if (n == 3)
    {
      if (k != 0)
        reverseCounters(arrayOfInt);
      if (isFinderPattern(arrayOfInt))
      {
        this.startEnd[0] = i1;
        this.startEnd[1] = i2;
        return;
      }
      if (k != 0)
        reverseCounters(arrayOfInt);
      i1 += arrayOfInt[0] + arrayOfInt[1];
      arrayOfInt[0] = arrayOfInt[2];
      arrayOfInt[1] = arrayOfInt[3];
      arrayOfInt[2] = 0;
      arrayOfInt[3] = 0;
      n--;
      arrayOfInt[n] = 1;
      if (m == 0)
        break label333;
    }
    label310: label333: for (int m = 0; ; m = 1)
    {
      break;
      n++;
      break label310;
    }
  }

  private static int getNextSecondBar(BitArray paramBitArray, int paramInt)
  {
    if (paramBitArray.get(paramInt))
      return paramBitArray.getNextSet(paramBitArray.getNextUnset(paramInt));
    return paramBitArray.getNextUnset(paramBitArray.getNextSet(paramInt));
  }

  private static boolean isNotA1left(FinderPattern paramFinderPattern, boolean paramBoolean1, boolean paramBoolean2)
  {
    return (paramFinderPattern.getValue() != 0) || (!paramBoolean1) || (!paramBoolean2);
  }

  private static boolean isPartialRow(Iterable<ExpandedPair> paramIterable, Iterable<ExpandedRow> paramIterable1)
  {
    Iterator localIterator1 = paramIterable1.iterator();
    if (!localIterator1.hasNext())
      return false;
    ExpandedRow localExpandedRow = (ExpandedRow)localIterator1.next();
    int i = 1;
    Iterator localIterator2 = paramIterable.iterator();
    label129: 
    while (true)
    {
      label49: ExpandedPair localExpandedPair;
      Iterator localIterator3;
      label79: int j;
      if (!localIterator2.hasNext())
      {
        if (i != 0)
          return true;
      }
      else
      {
        localExpandedPair = (ExpandedPair)localIterator2.next();
        localIterator3 = localExpandedRow.getPairs().iterator();
        boolean bool = localIterator3.hasNext();
        j = 0;
        if (bool)
          break label107;
      }
      while (true)
      {
        if (j != 0)
          break label129;
        i = 0;
        break label49;
        break;
        label107: if (!localExpandedPair.equals((ExpandedPair)localIterator3.next()))
          break label79;
        j = 1;
      }
    }
  }

  private static boolean isValidSequence(List<ExpandedPair> paramList)
  {
    int[][] arrayOfInt = FINDER_PATTERN_SEQUENCES;
    int i = arrayOfInt.length;
    int[] arrayOfInt1;
    for (int j = 0; ; j++)
    {
      if (j >= i)
        return false;
      arrayOfInt1 = arrayOfInt[j];
      if (paramList.size() <= arrayOfInt1.length)
        break;
    }
    int k = 1;
    label94: for (int m = 0; ; m++)
    {
      if (m >= paramList.size());
      while (k != 0)
      {
        return true;
        if (((ExpandedPair)paramList.get(m)).getFinderPattern().getValue() == arrayOfInt1[m])
          break label94;
        k = 0;
      }
      break;
    }
  }

  private FinderPattern parseFoundFinderPattern(BitArray paramBitArray, int paramInt, boolean paramBoolean)
  {
    int n;
    if (paramBoolean)
      n = -1 + this.startEnd[0];
    while (true)
    {
      int k;
      int i;
      int j;
      int[] arrayOfInt;
      if ((n < 0) || (paramBitArray.get(n)))
      {
        int i1 = n + 1;
        k = this.startEnd[0] - i1;
        i = i1;
        j = this.startEnd[1];
        arrayOfInt = getDecodeFinderCounters();
        System.arraycopy(arrayOfInt, 0, arrayOfInt, 1, -1 + arrayOfInt.length);
        arrayOfInt[0] = k;
      }
      try
      {
        int m = parseFinderValue(arrayOfInt, FINDER_PATTERNS);
        return new FinderPattern(m, new int[] { i, j }, i, j, paramInt);
        n--;
        continue;
        i = this.startEnd[0];
        j = paramBitArray.getNextUnset(1 + this.startEnd[1]);
        k = j - this.startEnd[1];
      }
      catch (NotFoundException localNotFoundException)
      {
      }
    }
    return null;
  }

  private static void removePartialRows(List<ExpandedPair> paramList, List<ExpandedRow> paramList1)
  {
    Iterator localIterator1 = paramList1.iterator();
    ExpandedRow localExpandedRow;
    do
    {
      if (!localIterator1.hasNext())
        return;
      localExpandedRow = (ExpandedRow)localIterator1.next();
    }
    while (localExpandedRow.getPairs().size() == paramList.size());
    int i = 1;
    Iterator localIterator2 = localExpandedRow.getPairs().iterator();
    label129: label153: 
    while (true)
    {
      if (!localIterator2.hasNext())
      {
        label69: if (i == 0)
          break label129;
        localIterator1.remove();
        break;
      }
      ExpandedPair localExpandedPair = (ExpandedPair)localIterator2.next();
      Iterator localIterator3 = paramList.iterator();
      label103: boolean bool = localIterator3.hasNext();
      int j = 0;
      if (!bool);
      while (true)
      {
        if (j != 0)
          break label153;
        i = 0;
        break label69;
        break;
        if (!localExpandedPair.equals((ExpandedPair)localIterator3.next()))
          break label103;
        j = 1;
      }
    }
  }

  private static void reverseCounters(int[] paramArrayOfInt)
  {
    int i = paramArrayOfInt.length;
    for (int j = 0; ; j++)
    {
      if (j >= i / 2)
        return;
      int k = paramArrayOfInt[j];
      paramArrayOfInt[j] = paramArrayOfInt[(-1 + (i - j))];
      paramArrayOfInt[(-1 + (i - j))] = k;
    }
  }

  private void storeRow(int paramInt, boolean paramBoolean)
  {
    int i = 0;
    boolean bool1 = false;
    int j = this.rows.size();
    boolean bool2 = false;
    if (i >= j)
      label25: if ((!bool2) && (!bool1))
        break label91;
    label91: 
    while (isPartialRow(this.pairs, this.rows))
    {
      return;
      ExpandedRow localExpandedRow = (ExpandedRow)this.rows.get(i);
      if (localExpandedRow.getRowNumber() > paramInt)
      {
        bool2 = localExpandedRow.isEquivalent(this.pairs);
        break label25;
      }
      bool1 = localExpandedRow.isEquivalent(this.pairs);
      i++;
      break;
    }
    this.rows.add(i, new ExpandedRow(this.pairs, paramInt, paramBoolean));
    removePartialRows(this.pairs, this.rows);
  }

  DataCharacter decodeDataCharacter(BitArray paramBitArray, FinderPattern paramFinderPattern, boolean paramBoolean1, boolean paramBoolean2)
    throws NotFoundException
  {
    int[] arrayOfInt1 = getDataCharacterCounters();
    arrayOfInt1[0] = 0;
    arrayOfInt1[1] = 0;
    arrayOfInt1[2] = 0;
    arrayOfInt1[3] = 0;
    arrayOfInt1[4] = 0;
    arrayOfInt1[5] = 0;
    arrayOfInt1[6] = 0;
    arrayOfInt1[7] = 0;
    if (paramBoolean2)
      recordPatternInReverse(paramBitArray, paramFinderPattern.getStartEnd()[0], arrayOfInt1);
    float f1;
    while (true)
    {
      f1 = count(arrayOfInt1) / 17;
      float f2 = (paramFinderPattern.getStartEnd()[1] - paramFinderPattern.getStartEnd()[0]) / 15.0F;
      if (Math.abs(f1 - f2) / f2 <= 0.3F)
        break;
      throw NotFoundException.getNotFoundInstance();
      recordPattern(paramBitArray, paramFinderPattern.getStartEnd()[1], arrayOfInt1);
      int i = 0;
      for (int j = -1 + arrayOfInt1.length; i < j; j--)
      {
        int k = arrayOfInt1[i];
        arrayOfInt1[i] = arrayOfInt1[j];
        arrayOfInt1[j] = k;
        i++;
      }
    }
    int[] arrayOfInt2 = getOddCounts();
    int[] arrayOfInt3 = getEvenCounts();
    float[] arrayOfFloat1 = getOddRoundingErrors();
    float[] arrayOfFloat2 = getEvenRoundingErrors();
    int m = 0;
    int i3;
    label237: int i5;
    label252: int i6;
    int i7;
    int i8;
    int i9;
    label274: int i10;
    if (m >= arrayOfInt1.length)
    {
      adjustOddEvenCounts(17);
      int i2 = 4 * paramFinderPattern.getValue();
      if (!paramBoolean1)
        break label454;
      i3 = 0;
      int i4 = i2 + i3;
      if (!paramBoolean2)
        break label460;
      i5 = 0;
      i6 = -1 + (i5 + i4);
      i7 = 0;
      i8 = 0;
      i9 = -1 + arrayOfInt2.length;
      if (i9 >= 0)
        break label466;
      i10 = 0;
    }
    int i12;
    for (int i11 = -1 + arrayOfInt3.length; ; i11--)
    {
      if (i11 < 0)
      {
        i12 = i8 + i10;
        if (((i7 & 0x1) == 0) && (i7 <= 13) && (i7 >= 4))
          break label554;
        throw NotFoundException.getNotFoundInstance();
        float f3 = 1.0F * arrayOfInt1[m] / f1;
        int n = (int)(0.5F + f3);
        label369: int i1;
        if (n < 1)
        {
          if (f3 < 0.3F)
            throw NotFoundException.getNotFoundInstance();
          n = 1;
          i1 = m / 2;
          if ((m & 0x1) != 0)
            break label433;
          arrayOfInt2[i1] = n;
          arrayOfFloat1[i1] = (f3 - n);
        }
        while (true)
        {
          m++;
          break;
          if (n <= 8)
            break label369;
          if (f3 > 8.7F)
            throw NotFoundException.getNotFoundInstance();
          n = 8;
          break label369;
          label433: arrayOfInt3[i1] = n;
          arrayOfFloat2[i1] = (f3 - n);
        }
        label454: i3 = 2;
        break label237;
        label460: i5 = 1;
        break label252;
        label466: if (isNotA1left(paramFinderPattern, paramBoolean1, paramBoolean2))
          i8 += WEIGHTS[i6][(i9 * 2)] * arrayOfInt2[i9];
        i7 += arrayOfInt2[i9];
        i9--;
        break label274;
      }
      if (isNotA1left(paramFinderPattern, paramBoolean1, paramBoolean2))
        i10 += WEIGHTS[i6][(1 + i11 * 2)] * arrayOfInt3[i11];
    }
    label554: int i13 = (13 - i7) / 2;
    int i14 = SYMBOL_WIDEST[i13];
    int i15 = 9 - i14;
    int i16 = RSSUtils.getRSSvalue(arrayOfInt2, i14, true);
    int i17 = RSSUtils.getRSSvalue(arrayOfInt3, i15, false);
    int i18 = EVEN_TOTAL_SUBSET[i13];
    int i19 = GSUM[i13] + (i17 + i16 * i18);
    DataCharacter localDataCharacter = new DataCharacter(i19, i12);
    return localDataCharacter;
  }

  public Result decodeRow(int paramInt, BitArray paramBitArray, Map<DecodeHintType, ?> paramMap)
    throws NotFoundException, FormatException
  {
    this.pairs.clear();
    this.startFromEven = false;
    try
    {
      Result localResult = constructResult(decodeRow2pairs(paramInt, paramBitArray));
      return localResult;
    }
    catch (NotFoundException localNotFoundException)
    {
      this.pairs.clear();
      this.startFromEven = true;
    }
    return constructResult(decodeRow2pairs(paramInt, paramBitArray));
  }

  List<ExpandedPair> decodeRow2pairs(int paramInt, BitArray paramBitArray)
    throws NotFoundException
  {
    try
    {
      while (true)
      {
        ExpandedPair localExpandedPair = retrieveNextPair(paramBitArray, this.pairs, paramInt);
        this.pairs.add(localExpandedPair);
      }
    }
    catch (NotFoundException localNotFoundException)
    {
      if (this.pairs.isEmpty())
        throw localNotFoundException;
      if (!checkChecksum())
        break label58;
    }
    List localList = this.pairs;
    return localList;
    label58: if (this.rows.isEmpty());
    for (int i = 0; ; i = 1)
    {
      storeRow(paramInt, false);
      if (i != 0)
      {
        localList = checkRows(false);
        if (localList != null)
          break;
        localList = checkRows(true);
        if (localList != null)
          break;
      }
      throw NotFoundException.getNotFoundInstance();
    }
  }

  List<ExpandedRow> getRows()
  {
    return this.rows;
  }

  public void reset()
  {
    this.pairs.clear();
    this.rows.clear();
  }

  ExpandedPair retrieveNextPair(BitArray paramBitArray, List<ExpandedPair> paramList, int paramInt)
    throws NotFoundException
  {
    boolean bool;
    label29: int i;
    int j;
    if (paramList.size() % 2 == 0)
    {
      bool = true;
      if (this.startFromEven)
      {
        if (!bool)
          break label129;
        bool = false;
      }
      i = 1;
      j = -1;
    }
    FinderPattern localFinderPattern;
    DataCharacter localDataCharacter1;
    label129: label139: 
    while (true)
    {
      findNextPair(paramBitArray, paramList, j);
      localFinderPattern = parseFoundFinderPattern(paramBitArray, paramInt, bool);
      if (localFinderPattern == null)
        j = getNextSecondBar(paramBitArray, this.startEnd[0]);
      while (true)
      {
        if (i != 0)
          break label139;
        localDataCharacter1 = decodeDataCharacter(paramBitArray, localFinderPattern, bool, true);
        if ((paramList.isEmpty()) || (!((ExpandedPair)paramList.get(-1 + paramList.size())).mustBeLast()))
          break label141;
        throw NotFoundException.getNotFoundInstance();
        bool = false;
        break;
        bool = true;
        break label29;
        i = 0;
      }
    }
    try
    {
      label141: DataCharacter localDataCharacter3 = decodeDataCharacter(paramBitArray, localFinderPattern, bool, false);
      localDataCharacter2 = localDataCharacter3;
      return new ExpandedPair(localDataCharacter1, localDataCharacter2, localFinderPattern, true);
    }
    catch (NotFoundException localNotFoundException)
    {
      while (true)
        DataCharacter localDataCharacter2 = null;
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.google.zxing.oned.rss.expanded.RSSExpandedReader
 * JD-Core Version:    0.6.2
 */