protected final DetectorResult a(FinderPatternInfo paramFinderPatternInfo) { FinderPattern localFinderPattern1 = paramFinderPatternInfo.b(); FinderPattern localFinderPattern2 = paramFinderPatternInfo.c(); FinderPattern localFinderPattern3 = paramFinderPatternInfo.a(); float f1 = a(localFinderPattern1, localFinderPattern2, localFinderPattern3); if (f1 < 1.0F) throw NotFoundException.a(); int i = a(localFinderPattern1, localFinderPattern2, localFinderPattern3, f1); Version localVersion = Version.a(i); int j = -7 + localVersion.d(); int k = localVersion.b().length; Object localObject = null; int m; int n; int i1; float f5; if (k > 0) { float f2 = localFinderPattern2.a() - localFinderPattern1.a() + localFinderPattern3.a(); float f3 = localFinderPattern2.b() - localFinderPattern1.b() + localFinderPattern3.b(); float f4 = 1.0F - 3.0F / j; m = (int)(localFinderPattern1.a() + f4 * (f2 - localFinderPattern1.a())); n = (int)(localFinderPattern1.b() + f4 * (f3 - localFinderPattern1.b())); i1 = 4; localObject = null; if (i1 <= 16) f5 = i1; } while (true) { try { AlignmentPattern localAlignmentPattern = a(f1, m, n, f5); localObject = localAlignmentPattern; PerspectiveTransform localPerspectiveTransform = a(localFinderPattern1, localFinderPattern2, localFinderPattern3, localObject, i); BitMatrix localBitMatrix = a(this.a, localPerspectiveTransform, i); if (localObject != null) break label270; arrayOfResultPoint = new ResultPoint[] { localFinderPattern3, localFinderPattern1, localFinderPattern2 }; return new DetectorResult(localBitMatrix, arrayOfResultPoint); } catch (NotFoundException localNotFoundException) { i1 <<= 1; } break; label270: ResultPoint[] arrayOfResultPoint = { localFinderPattern3, localFinderPattern1, localFinderPattern2, localObject }; } }