package com.google.zxing.common.reedsolomon; /* loaded from: classes.dex */ public final class ReedSolomonDecoder { private final GenericGF a; public ReedSolomonDecoder(GenericGF genericGF) { this.a = genericGF; } public void a(int[] iArr, int i) throws ReedSolomonException { GenericGFPoly genericGFPoly = new GenericGFPoly(this.a, iArr); int[] iArr2 = new int[i]; boolean z = true; for (int i2 = 0; i2 < i; i2++) { GenericGF genericGF = this.a; int a = genericGFPoly.a(genericGF.a(genericGF.a() + i2)); iArr2[(i - 1) - i2] = a; if (a != 0) { z = false; } } if (z) { return; } GenericGFPoly[] a2 = a(this.a.a(i, 1), new GenericGFPoly(this.a, iArr2), i); GenericGFPoly genericGFPoly2 = a2[0]; GenericGFPoly genericGFPoly3 = a2[1]; int[] a3 = a(genericGFPoly2); int[] a4 = a(genericGFPoly3, a3); for (int i3 = 0; i3 < a3.length; i3++) { int length = (iArr.length - 1) - this.a.c(a3[i3]); if (length < 0) { throw new ReedSolomonException("Bad error location"); } iArr[length] = GenericGF.c(iArr[length], a4[i3]); } } private GenericGFPoly[] a(GenericGFPoly genericGFPoly, GenericGFPoly genericGFPoly2, int i) throws ReedSolomonException { if (genericGFPoly.b() < genericGFPoly2.b()) { genericGFPoly2 = genericGFPoly; genericGFPoly = genericGFPoly2; } GenericGFPoly d = this.a.d(); GenericGFPoly b = this.a.b(); do { GenericGFPoly genericGFPoly3 = genericGFPoly2; genericGFPoly2 = genericGFPoly; genericGFPoly = genericGFPoly3; GenericGFPoly genericGFPoly4 = b; GenericGFPoly genericGFPoly5 = d; d = genericGFPoly4; if (genericGFPoly.b() >= i / 2) { if (!genericGFPoly.c()) { GenericGFPoly d2 = this.a.d(); int b2 = this.a.b(genericGFPoly.b(genericGFPoly.b())); while (genericGFPoly2.b() >= genericGFPoly.b() && !genericGFPoly2.c()) { int b3 = genericGFPoly2.b() - genericGFPoly.b(); int b4 = this.a.b(genericGFPoly2.b(genericGFPoly2.b()), b2); d2 = d2.a(this.a.a(b3, b4)); genericGFPoly2 = genericGFPoly2.a(genericGFPoly.a(b3, b4)); } b = d2.c(d).a(genericGFPoly5); } else { throw new ReedSolomonException("r_{i-1} was zero"); } } else { int b5 = d.b(0); if (b5 != 0) { int b6 = this.a.b(b5); return new GenericGFPoly[]{d.c(b6), genericGFPoly.c(b6)}; } throw new ReedSolomonException("sigmaTilde(0) was zero"); } } while (genericGFPoly2.b() < genericGFPoly.b()); throw new IllegalStateException("Division algorithm failed to reduce polynomial?"); } private int[] a(GenericGFPoly genericGFPoly) throws ReedSolomonException { int b = genericGFPoly.b(); int i = 0; if (b == 1) { return new int[]{genericGFPoly.b(1)}; } int[] iArr = new int[b]; for (int i2 = 1; i2 < this.a.c() && i < b; i2++) { if (genericGFPoly.a(i2) == 0) { iArr[i] = this.a.b(i2); i++; } } if (i == b) { return iArr; } throw new ReedSolomonException("Error locator degree does not match number of roots"); } private int[] a(GenericGFPoly genericGFPoly, int[] iArr) { int length = iArr.length; int[] iArr2 = new int[length]; for (int i = 0; i < length; i++) { int b = this.a.b(iArr[i]); int i2 = 1; for (int i3 = 0; i3 < length; i3++) { if (i != i3) { int b2 = this.a.b(iArr[i3], b); i2 = this.a.b(i2, (b2 & 1) == 0 ? b2 | 1 : b2 & (-2)); } } iArr2[i] = this.a.b(genericGFPoly.a(b), this.a.b(i2)); if (this.a.a() != 0) { iArr2[i] = this.a.b(iArr2[i], b); } } return iArr2; } }