Source/sources/gnu/kawa/lispexpr/LispReader.java
public static java.lang.Object parseNumber(char[] r54, int r55, int r56, char r57, int r58, int r59) {
        /*
            int r26 = r55 + r56
            r13 = r55
            r0 = r26
            if (r13 < r0) goto L_0x000b
            java.lang.String r4 = "no digits"
        L_0x000a:
            return r4
        L_0x000b:
            int r43 = r13 + 1
            char r18 = r54[r13]
        L_0x000f:
            r5 = 35
            r0 = r18
            if (r0 != r5) goto L_0x00d5
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x0020
            java.lang.String r4 = "no digits"
            r13 = r43
            goto L_0x000a
        L_0x0020:
            int r13 = r43 + 1
            char r18 = r54[r43]
            switch(r18) {
                case 66: goto L_0x0044;
                case 68: goto L_0x0062;
                case 69: goto L_0x0076;
                case 73: goto L_0x0076;
                case 79: goto L_0x0058;
                case 88: goto L_0x006c;
                case 98: goto L_0x0044;
                case 100: goto L_0x0062;
                case 101: goto L_0x0076;
                case 105: goto L_0x0076;
                case 111: goto L_0x0058;
                case 120: goto L_0x006c;
                default: goto L_0x0027;
            }
        L_0x0027:
            r53 = 0
        L_0x0029:
            r5 = 10
            r0 = r18
            int r24 = java.lang.Character.digit(r0, r5)
            if (r24 >= 0) goto L_0x0089
            r5 = 82
            r0 = r18
            if (r0 == r5) goto L_0x003f
            r5 = 114(0x72, float:1.6E-43)
            r0 = r18
            if (r0 != r5) goto L_0x00b0
        L_0x003f:
            if (r58 == 0) goto L_0x009c
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0044:
            if (r58 == 0) goto L_0x0049
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0049:
            r58 = 2
            r43 = r13
        L_0x004d:
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x00cd
            java.lang.String r4 = "no digits"
            r13 = r43
            goto L_0x000a
        L_0x0058:
            if (r58 == 0) goto L_0x005d
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x005d:
            r58 = 8
            r43 = r13
            goto L_0x004d
        L_0x0062:
            if (r58 == 0) goto L_0x0067
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0067:
            r58 = 10
            r43 = r13
            goto L_0x004d
        L_0x006c:
            if (r58 == 0) goto L_0x0071
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0071:
            r58 = 16
            r43 = r13
            goto L_0x004d
        L_0x0076:
            if (r57 == 0) goto L_0x0084
            r5 = 32
            r0 = r57
            if (r0 != r5) goto L_0x0081
            java.lang.String r4 = "non-prefix exactness specifier"
            goto L_0x000a
        L_0x0081:
            java.lang.String r4 = "duplicate exactness specifier"
            goto L_0x000a
        L_0x0084:
            r57 = r18
            r43 = r13
            goto L_0x004d
        L_0x0089:
            int r5 = r53 * 10
            int r53 = r5 + r24
            r0 = r26
            if (r13 < r0) goto L_0x0095
            java.lang.String r4 = "missing letter after '#'"
            goto L_0x000a
        L_0x0095:
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0029
        L_0x009c:
            r5 = 2
            r0 = r53
            if (r0 < r5) goto L_0x00a7
            r5 = 35
            r0 = r53
            if (r0 <= r5) goto L_0x00ab
        L_0x00a7:
            java.lang.String r4 = "invalid radix specifier"
            goto L_0x000a
        L_0x00ab:
            r58 = r53
            r43 = r13
            goto L_0x004d
        L_0x00b0:
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            java.lang.String r7 = "unknown modifier '#"
            java.lang.StringBuilder r5 = r5.append(r7)
            r0 = r18
            java.lang.StringBuilder r5 = r5.append(r0)
            r7 = 39
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r4 = r5.toString()
            goto L_0x000a
        L_0x00cd:
            int r13 = r43 + 1
            char r18 = r54[r43]
            r43 = r13
            goto L_0x000f
        L_0x00d5:
            if (r57 != 0) goto L_0x00d9
            r57 = 32
        L_0x00d9:
            if (r58 != 0) goto L_0x00e3
            r31 = r56
        L_0x00dd:
            int r31 = r31 + -1
            if (r31 >= 0) goto L_0x0108
            r58 = 10
        L_0x00e3:
            r5 = 45
            r0 = r18
            if (r0 != r5) goto L_0x0113
            r9 = 1
        L_0x00ea:
            r41 = r9
            r5 = 45
            r0 = r18
            if (r0 == r5) goto L_0x00f8
            r5 = 43
            r0 = r18
            if (r0 != r5) goto L_0x0115
        L_0x00f8:
            r50 = 1
        L_0x00fa:
            if (r50 == 0) goto L_0x0515
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x0118
            java.lang.String r4 = "no digits following sign"
            r13 = r43
            goto L_0x000a
        L_0x0108:
            int r5 = r55 + r31
            char r5 = r54[r5]
            r7 = 46
            if (r5 != r7) goto L_0x00dd
            r58 = 10
            goto L_0x00e3
        L_0x0113:
            r9 = 0
            goto L_0x00ea
        L_0x0115:
            r50 = 0
            goto L_0x00fa
        L_0x0118:
            int r13 = r43 + 1
            char r18 = r54[r43]
        L_0x011c:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r18
            if (r0 == r5) goto L_0x0128
            r5 = 73
            r0 = r18
            if (r0 != r5) goto L_0x0174
        L_0x0128:
            r0 = r26
            if (r13 != r0) goto L_0x0174
            int r5 = r13 + -2
            r0 = r55
            if (r0 != r5) goto L_0x0174
            r5 = r59 & 1
            if (r5 == 0) goto L_0x0174
            char r49 = r54[r55]
            r5 = 43
            r0 = r49
            if (r0 == r5) goto L_0x0148
            r5 = 45
            r0 = r49
            if (r0 == r5) goto L_0x0148
            java.lang.String r4 = "no digits"
            goto L_0x000a
        L_0x0148:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r57
            if (r0 == r5) goto L_0x0154
            r5 = 73
            r0 = r57
            if (r0 != r5) goto L_0x0166
        L_0x0154:
            gnu.math.DComplex r4 = new gnu.math.DComplex
            r16 = 0
            if (r9 == 0) goto L_0x0163
            r14 = -4616189618054758400(0xbff0000000000000, double:-1.0)
        L_0x015c:
            r0 = r16
            r4.<init>(r0, r14)
            goto L_0x000a
        L_0x0163:
            r14 = 4607182418800017408(0x3ff0000000000000, double:1.0)
            goto L_0x015c
        L_0x0166:
            if (r9 == 0) goto L_0x016f
            gnu.math.CComplex r5 = gnu.math.Complex.imMinusOne()
        L_0x016c:
            r4 = r5
            goto L_0x000a
        L_0x016f:
            gnu.math.CComplex r5 = gnu.math.Complex.imOne()
            goto L_0x016c
        L_0x0174:
            int r48 = r13 + -1
            r30 = 0
            r29 = -1
            r6 = -1
            r21 = -1
            r20 = 0
            r52 = 0
            r40 = 0
            r10 = 0
        L_0x0185:
            r0 = r18
            r1 = r58
            int r25 = java.lang.Character.digit(r0, r1)
            if (r25 < 0) goto L_0x01e4
            if (r30 == 0) goto L_0x0197
            if (r21 >= 0) goto L_0x0197
            java.lang.String r4 = "digit after '#' in number"
            goto L_0x000a
        L_0x0197:
            if (r6 >= 0) goto L_0x019b
            int r6 = r13 + -1
        L_0x019b:
            r0 = r58
            long r14 = (long) r0
            long r14 = r14 * r10
            r0 = r25
            long r0 = (long) r0
            r16 = r0
            long r10 = r14 + r16
        L_0x01a6:
            r0 = r26
            if (r13 != r0) goto L_0x028e
        L_0x01aa:
            r34 = 0
            if (r6 >= 0) goto L_0x0511
            if (r50 == 0) goto L_0x01de
            int r5 = r13 + 4
            r0 = r26
            if (r5 >= r0) goto L_0x01de
            int r5 = r13 + 3
            char r5 = r54[r5]
            r7 = 46
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 4
            char r5 = r54[r5]
            r7 = 48
            if (r5 != r7) goto L_0x01de
            char r5 = r54[r13]
            r7 = 105(0x69, float:1.47E-43)
            if (r5 != r7) goto L_0x0296
            int r5 = r13 + 1
            char r5 = r54[r5]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x0296
            int r5 = r13 + 2
            char r5 = r54[r5]
            r7 = 102(0x66, float:1.43E-43)
            if (r5 != r7) goto L_0x0296
            r34 = 105(0x69, float:1.47E-43)
        L_0x01de:
            if (r34 != 0) goto L_0x02b0
            java.lang.String r4 = "no digits"
            goto L_0x000a
        L_0x01e4:
            switch(r18) {
                case 46: goto L_0x01ea;
                case 47: goto L_0x0266;
                case 68: goto L_0x01fd;
                case 69: goto L_0x01fd;
                case 70: goto L_0x01fd;
                case 76: goto L_0x01fd;
                case 83: goto L_0x01fd;
                case 100: goto L_0x01fd;
                case 101: goto L_0x01fd;
                case 102: goto L_0x01fd;
                case 108: goto L_0x01fd;
                case 115: goto L_0x01fd;
                default: goto L_0x01e7;
            }
        L_0x01e7:
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x01ea:
            if (r21 < 0) goto L_0x01f0
            java.lang.String r4 = "duplicate '.' in number"
            goto L_0x000a
        L_0x01f0:
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x01fa
            java.lang.String r4 = "'.' in non-decimal number"
            goto L_0x000a
        L_0x01fa:
            int r21 = r13 + -1
            goto L_0x01a6
        L_0x01fd:
            r0 = r26
            if (r13 == r0) goto L_0x0207
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x020a
        L_0x0207:
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x020a:
            char r37 = r54[r13]
            int r28 = r13 + -1
            r5 = 43
            r0 = r37
            if (r0 == r5) goto L_0x021a
            r5 = 45
            r0 = r37
            if (r0 != r5) goto L_0x022e
        L_0x021a:
            int r13 = r13 + 1
            r0 = r26
            if (r13 >= r0) goto L_0x022a
            char r5 = r54[r13]
            r7 = 10
            int r5 = java.lang.Character.digit(r5, r7)
            if (r5 >= 0) goto L_0x023c
        L_0x022a:
            java.lang.String r4 = "missing exponent digits"
            goto L_0x000a
        L_0x022e:
            r5 = 10
            r0 = r37
            int r5 = java.lang.Character.digit(r0, r5)
            if (r5 >= 0) goto L_0x023c
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x023c:
            if (r29 < 0) goto L_0x0242
            java.lang.String r4 = "duplicate exponent"
            goto L_0x000a
        L_0x0242:
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x024c
            java.lang.String r4 = "exponent in non-decimal number"
            goto L_0x000a
        L_0x024c:
            if (r6 >= 0) goto L_0x0252
            java.lang.String r4 = "mantissa with no digits"
            goto L_0x000a
        L_0x0252:
            r29 = r28
        L_0x0254:
            int r13 = r13 + 1
            r0 = r26
            if (r13 >= r0) goto L_0x01aa
            char r5 = r54[r13]
            r7 = 10
            int r5 = java.lang.Character.digit(r5, r7)
            if (r5 >= 0) goto L_0x0254
            goto L_0x01aa
        L_0x0266:
            if (r40 == 0) goto L_0x026c
            java.lang.String r4 = "multiple fraction symbol '/'"
            goto L_0x000a
        L_0x026c:
            if (r6 >= 0) goto L_0x0272
            java.lang.String r4 = "no digits before fraction symbol '/'"
            goto L_0x000a
        L_0x0272:
            if (r29 >= 0) goto L_0x0276
            if (r21 < 0) goto L_0x027a
        L_0x0276:
            java.lang.String r4 = "fraction symbol '/' following exponent or '.'"
            goto L_0x000a
        L_0x027a:
            int r7 = r13 - r6
            r5 = r54
            r8 = r58
            gnu.math.IntNum r40 = valueOf(r5, r6, r7, r8, r9, r10)
            r6 = -1
            r10 = 0
            r9 = 0
            r30 = 0
            r52 = 0
            goto L_0x01a6
        L_0x028e:
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0185
        L_0x0296:
            char r5 = r54[r13]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 1
            char r5 = r54[r5]
            r7 = 97
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 2
            char r5 = r54[r5]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x01de
            r34 = 110(0x6e, float:1.54E-43)
            goto L_0x01de
        L_0x02b0:
            int r13 = r13 + 5
            r43 = r13
        L_0x02b4:
            if (r30 != 0) goto L_0x02b8
            if (r52 == 0) goto L_0x02b8
        L_0x02b8:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r57
            if (r0 == r5) goto L_0x02cc
            r5 = 73
            r0 = r57
            if (r0 == r5) goto L_0x02cc
            r5 = 32
            r0 = r57
            if (r0 != r5) goto L_0x0328
            if (r30 == 0) goto L_0x0328
        L_0x02cc:
            r33 = 1
        L_0x02ce:
            r38 = 0
            r27 = 0
            if (r34 == 0) goto L_0x032e
            r33 = 1
            r5 = 105(0x69, float:1.47E-43)
            r0 = r34
            if (r0 != r5) goto L_0x032b
            r22 = 9218868437227405312(0x7ff0000000000000, double:Infinity)
        L_0x02de:
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r9 == 0) goto L_0x02e7
            r0 = r22
            double r0 = -r0
            r22 = r0
        L_0x02e7:
            r0 = r38
            r1 = r22
            r0.<init>(r1)
        L_0x02ee:
            r5 = 101(0x65, float:1.42E-43)
            r0 = r57
            if (r0 == r5) goto L_0x02fa
            r5 = 69
            r0 = r57
            if (r0 != r5) goto L_0x02fe
        L_0x02fa:
            gnu.math.RatNum r38 = r38.toExact()
        L_0x02fe:
            r0 = r43
            r1 = r26
            if (r0 >= r1) goto L_0x04d7
            int r13 = r43 + 1
            char r18 = r54[r43]
            r5 = 64
            r0 = r18
            if (r0 != r5) goto L_0x042c
            int r14 = r26 - r13
            r16 = 10
            r12 = r54
            r15 = r57
            r17 = r59
            java.lang.Object r4 = parseNumber(r12, r13, r14, r15, r16, r17)
            boolean r5 = r4 instanceof java.lang.String
            if (r5 != 0) goto L_0x000a
            boolean r5 = r4 instanceof gnu.math.RealNum
            if (r5 != 0) goto L_0x0409
            java.lang.String r4 = "invalid complex polar constant"
            goto L_0x000a
        L_0x0328:
            r33 = 0
            goto L_0x02ce
        L_0x032b:
            r22 = 9221120237041090560(0x7ff8000000000000, double:NaN)
            goto L_0x02de
        L_0x032e:
            if (r29 >= 0) goto L_0x0332
            if (r21 < 0) goto L_0x039b
        L_0x0332:
            r0 = r21
            if (r6 <= r0) goto L_0x033a
            if (r21 < 0) goto L_0x033a
            r6 = r21
        L_0x033a:
            if (r40 == 0) goto L_0x0342
            java.lang.String r4 = "floating-point number after fraction symbol '/'"
            r13 = r43
            goto L_0x000a
        L_0x0342:
            java.lang.String r51 = new java.lang.String
            int r5 = r43 - r6
            r0 = r51
            r1 = r54
            r0.<init>(r1, r6, r5)
            if (r29 < 0) goto L_0x0385
            char r5 = r54[r29]
            char r27 = java.lang.Character.toLowerCase(r5)
            r5 = 101(0x65, float:1.42E-43)
            r0 = r27
            if (r0 == r5) goto L_0x0385
            int r44 = r29 - r6
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            r7 = 0
            r0 = r51
            r1 = r44
            java.lang.String r7 = r0.substring(r7, r1)
            java.lang.StringBuilder r5 = r5.append(r7)
            r7 = 101(0x65, float:1.42E-43)
            java.lang.StringBuilder r5 = r5.append(r7)
            int r7 = r44 + 1
            r0 = r51
            java.lang.String r7 = r0.substring(r7)
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r51 = r5.toString()
        L_0x0385:
            double r22 = gnu.lists.Convert.parseDouble(r51)
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r9 == 0) goto L_0x0392
            r0 = r22
            double r0 = -r0
            r22 = r0
        L_0x0392:
            r0 = r38
            r1 = r22
            r0.<init>(r1)
            goto L_0x02ee
        L_0x039b:
            int r7 = r43 - r6
            r5 = r54
            r8 = r58
            gnu.math.IntNum r35 = valueOf(r5, r6, r7, r8, r9, r10)
            if (r40 != 0) goto L_0x03c6
            r38 = r35
            r39 = r38
        L_0x03ab:
            if (r33 == 0) goto L_0x050d
            boolean r5 = r39.isExact()
            if (r5 == 0) goto L_0x050d
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r41 == 0) goto L_0x0404
            boolean r5 = r39.isZero()
            if (r5 == 0) goto L_0x0404
            r14 = -9223372036854775808
        L_0x03bf:
            r0 = r38
            r0.<init>(r14)
            goto L_0x02ee
        L_0x03c6:
            boolean r5 = r35.isZero()
            if (r5 == 0) goto L_0x03f9
            boolean r42 = r40.isZero()
            if (r33 == 0) goto L_0x03e8
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r42 == 0) goto L_0x03e0
            r14 = 9221120237041090560(0x7ff8000000000000, double:NaN)
        L_0x03d8:
            r0 = r38
            r0.<init>(r14)
        L_0x03dd:
            r39 = r38
            goto L_0x03ab
        L_0x03e0:
            if (r41 == 0) goto L_0x03e5
            r14 = -4503599627370496(0xfff0000000000000, double:-Infinity)
            goto L_0x03d8
        L_0x03e5:
            r14 = 9218868437227405312(0x7ff0000000000000, double:Infinity)
            goto L_0x03d8
        L_0x03e8:
            if (r42 == 0) goto L_0x03f0
            java.lang.String r4 = "0/0 is undefined"
            r13 = r43
            goto L_0x000a
        L_0x03f0:
            r0 = r40
            r1 = r35
            gnu.math.RatNum r38 = gnu.math.RatNum.make(r0, r1)
            goto L_0x03dd
        L_0x03f9:
            r0 = r40
            r1 = r35
            gnu.math.RatNum r38 = gnu.math.RatNum.make(r0, r1)
            r39 = r38
            goto L_0x03ab
        L_0x0404:
            double r14 = r39.doubleValue()
            goto L_0x03bf
        L_0x0409:
            r46 = r4
            gnu.math.RealNum r46 = (gnu.math.RealNum) r46
            boolean r5 = r38.isZero()
            if (r5 == 0) goto L_0x0422
            boolean r5 = r46.isExact()
            if (r5 != 0) goto L_0x0422
            gnu.math.DFloNum r4 = new gnu.math.DFloNum
            r14 = 0
            r4.<init>(r14)
            goto L_0x000a
        L_0x0422:
            r0 = r38
            r1 = r46
            gnu.math.DComplex r4 = gnu.math.Complex.polar(r0, r1)
            goto L_0x000a
        L_0x042c:
            r5 = 45
            r0 = r18
            if (r0 == r5) goto L_0x0438
            r5 = 43
            r0 = r18
            if (r0 != r5) goto L_0x0493
        L_0x0438:
            int r13 = r13 + -1
            int r14 = r26 - r13
            r16 = 10
            r12 = r54
            r15 = r57
            r17 = r59
            java.lang.Object r32 = parseNumber(r12, r13, r14, r15, r16, r17)
            r0 = r32
            boolean r5 = r0 instanceof java.lang.String
            if (r5 == 0) goto L_0x0452
            r4 = r32
            goto L_0x000a
        L_0x0452:
            r0 = r32
            boolean r5 = r0 instanceof gnu.math.Complex
            if (r5 != 0) goto L_0x0475
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            java.lang.String r7 = "invalid numeric constant ("
            java.lang.StringBuilder r5 = r5.append(r7)
            r0 = r32
            java.lang.StringBuilder r5 = r5.append(r0)
            java.lang.String r7 = ")"
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r4 = r5.toString()
            goto L_0x000a
        L_0x0475:
            r19 = r32
            gnu.math.Complex r19 = (gnu.math.Complex) r19
            gnu.math.RealNum r47 = r19.mo11415re()
            boolean r5 = r47.isZero()
            if (r5 != 0) goto L_0x0487
            java.lang.String r4 = "invalid numeric constant"
            goto L_0x000a
        L_0x0487:
            gnu.math.RealNum r5 = r19.mo11414im()
            r0 = r38
            gnu.math.Complex r4 = gnu.math.Complex.make(r0, r5)
            goto L_0x000a
        L_0x0493:
            r36 = 0
        L_0x0495:
            boolean r5 = java.lang.Character.isLetter(r18)
            if (r5 != 0) goto L_0x04ba
            int r13 = r13 + -1
        L_0x049d:
            r5 = 1
            r0 = r36
            if (r0 != r5) goto L_0x04d3
            int r5 = r13 + -1
            char r45 = r54[r5]
            r5 = 105(0x69, float:1.47E-43)
            r0 = r45
            if (r0 == r5) goto L_0x04b2
            r5 = 73
            r0 = r45
            if (r0 != r5) goto L_0x04d3
        L_0x04b2:
            r0 = r26
            if (r13 >= r0) goto L_0x04c7
            java.lang.String r4 = "junk after imaginary suffix 'i'"
            goto L_0x000a
        L_0x04ba:
            int r36 = r36 + 1
            r0 = r26
            if (r13 == r0) goto L_0x049d
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0495
        L_0x04c7:
            gnu.math.IntNum r5 = gnu.math.IntNum.zero()
            r0 = r38
            gnu.math.Complex r4 = gnu.math.Complex.make(r5, r0)
            goto L_0x000a
        L_0x04d3:
            java.lang.String r4 = "excess junk after number"
            goto L_0x000a
        L_0x04d7:
            r0 = r38
            boolean r5 = r0 instanceof gnu.math.DFloNum
            if (r5 == 0) goto L_0x04ec
            if (r27 <= 0) goto L_0x04ec
            r5 = 101(0x65, float:1.42E-43)
            r0 = r27
            if (r0 == r5) goto L_0x04ec
            double r22 = r38.doubleValue()
            switch(r27) {
                case 100: goto L_0x04fd;
                case 102: goto L_0x04f2;
                case 108: goto L_0x0505;
                case 115: goto L_0x04f2;
                default: goto L_0x04ec;
            }
        L_0x04ec:
            r13 = r43
            r4 = r38
            goto L_0x000a
        L_0x04f2:
            r0 = r22
            float r5 = (float) r0
            java.lang.Float r4 = java.lang.Float.valueOf(r5)
            r13 = r43
            goto L_0x000a
        L_0x04fd:
            java.lang.Double r4 = java.lang.Double.valueOf(r22)
            r13 = r43
            goto L_0x000a
        L_0x0505:
            java.math.BigDecimal r4 = java.math.BigDecimal.valueOf(r22)
            r13 = r43
            goto L_0x000a
        L_0x050d:
            r38 = r39
            goto L_0x02ee
        L_0x0511:
            r43 = r13
            goto L_0x02b4
        L_0x0515:
            r13 = r43
            goto L_0x011c
        */
        throw new UnsupportedOperationException("Method not decompiled: gnu.kawa.lispexpr.LispReader.parseNumber(char[], int, int, char, int, int):java.lang.Object");
    }
/* Code decompiled incorrectly, please refer to instructions dump. */
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .
public static java.lang.Object parseNumber(char[] r54, int r55, int r56, char r57, int r58, int r59) {
        /*
            int r26 = r55 + r56
            r13 = r55
            r0 = r26
            if (r13 < r0) goto L_0x000b
            java.lang.String r4 = "no digits"
        L_0x000a:
            return r4
        L_0x000b:
            int r43 = r13 + 1
            char r18 = r54[r13]
        L_0x000f:
            r5 = 35
            r0 = r18
            if (r0 != r5) goto L_0x00d5
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x0020
            java.lang.String r4 = "no digits"
            r13 = r43
            goto L_0x000a
        L_0x0020:
            int r13 = r43 + 1
            char r18 = r54[r43]
            switch(r18) {
                case 66: goto L_0x0044;
                case 68: goto L_0x0062;
                case 69: goto L_0x0076;
                case 73: goto L_0x0076;
                case 79: goto L_0x0058;
                case 88: goto L_0x006c;
                case 98: goto L_0x0044;
                case 100: goto L_0x0062;
                case 101: goto L_0x0076;
                case 105: goto L_0x0076;
                case 111: goto L_0x0058;
                case 120: goto L_0x006c;
                default: goto L_0x0027;
            }
        L_0x0027:
            r53 = 0
        L_0x0029:
            r5 = 10
            r0 = r18
            int r24 = java.lang.Character.digit(r0, r5)
            if (r24 >= 0) goto L_0x0089
            r5 = 82
            r0 = r18
            if (r0 == r5) goto L_0x003f
            r5 = 114(0x72, float:1.6E-43)
            r0 = r18
            if (r0 != r5) goto L_0x00b0
        L_0x003f:
            if (r58 == 0) goto L_0x009c
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0044:
            if (r58 == 0) goto L_0x0049
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0049:
            r58 = 2
            r43 = r13
        L_0x004d:
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x00cd
            java.lang.String r4 = "no digits"
            r13 = r43
            goto L_0x000a
        L_0x0058:
            if (r58 == 0) goto L_0x005d
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x005d:
            r58 = 8
            r43 = r13
            goto L_0x004d
        L_0x0062:
            if (r58 == 0) goto L_0x0067
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0067:
            r58 = 10
            r43 = r13
            goto L_0x004d
        L_0x006c:
            if (r58 == 0) goto L_0x0071
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0071:
            r58 = 16
            r43 = r13
            goto L_0x004d
        L_0x0076:
            if (r57 == 0) goto L_0x0084
            r5 = 32
            r0 = r57
            if (r0 != r5) goto L_0x0081
            java.lang.String r4 = "non-prefix exactness specifier"
            goto L_0x000a
        L_0x0081:
            java.lang.String r4 = "duplicate exactness specifier"
            goto L_0x000a
        L_0x0084:
            r57 = r18
            r43 = r13
            goto L_0x004d
        L_0x0089:
            int r5 = r53 * 10
            int r53 = r5 + r24
            r0 = r26
            if (r13 < r0) goto L_0x0095
            java.lang.String r4 = "missing letter after '#'"
            goto L_0x000a
        L_0x0095:
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0029
        L_0x009c:
            r5 = 2
            r0 = r53
            if (r0 < r5) goto L_0x00a7
            r5 = 35
            r0 = r53
            if (r0 <= r5) goto L_0x00ab
        L_0x00a7:
            java.lang.String r4 = "invalid radix specifier"
            goto L_0x000a
        L_0x00ab:
            r58 = r53
            r43 = r13
            goto L_0x004d
        L_0x00b0:
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            java.lang.String r7 = "unknown modifier '#"
            java.lang.StringBuilder r5 = r5.append(r7)
            r0 = r18
            java.lang.StringBuilder r5 = r5.append(r0)
            r7 = 39
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r4 = r5.toString()
            goto L_0x000a
        L_0x00cd:
            int r13 = r43 + 1
            char r18 = r54[r43]
            r43 = r13
            goto L_0x000f
        L_0x00d5:
            if (r57 != 0) goto L_0x00d9
            r57 = 32
        L_0x00d9:
            if (r58 != 0) goto L_0x00e3
            r31 = r56
        L_0x00dd:
            int r31 = r31 + -1
            if (r31 >= 0) goto L_0x0108
            r58 = 10
        L_0x00e3:
            r5 = 45
            r0 = r18
            if (r0 != r5) goto L_0x0113
            r9 = 1
        L_0x00ea:
            r41 = r9
            r5 = 45
            r0 = r18
            if (r0 == r5) goto L_0x00f8
            r5 = 43
            r0 = r18
            if (r0 != r5) goto L_0x0115
        L_0x00f8:
            r50 = 1
        L_0x00fa:
            if (r50 == 0) goto L_0x0515
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x0118
            java.lang.String r4 = "no digits following sign"
            r13 = r43
            goto L_0x000a
        L_0x0108:
            int r5 = r55 + r31
            char r5 = r54[r5]
            r7 = 46
            if (r5 != r7) goto L_0x00dd
            r58 = 10
            goto L_0x00e3
        L_0x0113:
            r9 = 0
            goto L_0x00ea
        L_0x0115:
            r50 = 0
            goto L_0x00fa
        L_0x0118:
            int r13 = r43 + 1
            char r18 = r54[r43]
        L_0x011c:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r18
            if (r0 == r5) goto L_0x0128
            r5 = 73
            r0 = r18
            if (r0 != r5) goto L_0x0174
        L_0x0128:
            r0 = r26
            if (r13 != r0) goto L_0x0174
            int r5 = r13 + -2
            r0 = r55
            if (r0 != r5) goto L_0x0174
            r5 = r59 & 1
            if (r5 == 0) goto L_0x0174
            char r49 = r54[r55]
            r5 = 43
            r0 = r49
            if (r0 == r5) goto L_0x0148
            r5 = 45
            r0 = r49
            if (r0 == r5) goto L_0x0148
            java.lang.String r4 = "no digits"
            goto L_0x000a
        L_0x0148:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r57
            if (r0 == r5) goto L_0x0154
            r5 = 73
            r0 = r57
            if (r0 != r5) goto L_0x0166
        L_0x0154:
            gnu.math.DComplex r4 = new gnu.math.DComplex
            r16 = 0
            if (r9 == 0) goto L_0x0163
            r14 = -4616189618054758400(0xbff0000000000000, double:-1.0)
        L_0x015c:
            r0 = r16
            r4.<init>(r0, r14)
            goto L_0x000a
        L_0x0163:
            r14 = 4607182418800017408(0x3ff0000000000000, double:1.0)
            goto L_0x015c
        L_0x0166:
            if (r9 == 0) goto L_0x016f
            gnu.math.CComplex r5 = gnu.math.Complex.imMinusOne()
        L_0x016c:
            r4 = r5
            goto L_0x000a
        L_0x016f:
            gnu.math.CComplex r5 = gnu.math.Complex.imOne()
            goto L_0x016c
        L_0x0174:
            int r48 = r13 + -1
            r30 = 0
            r29 = -1
            r6 = -1
            r21 = -1
            r20 = 0
            r52 = 0
            r40 = 0
            r10 = 0
        L_0x0185:
            r0 = r18
            r1 = r58
            int r25 = java.lang.Character.digit(r0, r1)
            if (r25 < 0) goto L_0x01e4
            if (r30 == 0) goto L_0x0197
            if (r21 >= 0) goto L_0x0197
            java.lang.String r4 = "digit after '#' in number"
            goto L_0x000a
        L_0x0197:
            if (r6 >= 0) goto L_0x019b
            int r6 = r13 + -1
        L_0x019b:
            r0 = r58
            long r14 = (long) r0
            long r14 = r14 * r10
            r0 = r25
            long r0 = (long) r0
            r16 = r0
            long r10 = r14 + r16
        L_0x01a6:
            r0 = r26
            if (r13 != r0) goto L_0x028e
        L_0x01aa:
            r34 = 0
            if (r6 >= 0) goto L_0x0511
            if (r50 == 0) goto L_0x01de
            int r5 = r13 + 4
            r0 = r26
            if (r5 >= r0) goto L_0x01de
            int r5 = r13 + 3
            char r5 = r54[r5]
            r7 = 46
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 4
            char r5 = r54[r5]
            r7 = 48
            if (r5 != r7) goto L_0x01de
            char r5 = r54[r13]
            r7 = 105(0x69, float:1.47E-43)
            if (r5 != r7) goto L_0x0296
            int r5 = r13 + 1
            char r5 = r54[r5]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x0296
            int r5 = r13 + 2
            char r5 = r54[r5]
            r7 = 102(0x66, float:1.43E-43)
            if (r5 != r7) goto L_0x0296
            r34 = 105(0x69, float:1.47E-43)
        L_0x01de:
            if (r34 != 0) goto L_0x02b0
            java.lang.String r4 = "no digits"
            goto L_0x000a
        L_0x01e4:
            switch(r18) {
                case 46: goto L_0x01ea;
                case 47: goto L_0x0266;
                case 68: goto L_0x01fd;
                case 69: goto L_0x01fd;
                case 70: goto L_0x01fd;
                case 76: goto L_0x01fd;
                case 83: goto L_0x01fd;
                case 100: goto L_0x01fd;
                case 101: goto L_0x01fd;
                case 102: goto L_0x01fd;
                case 108: goto L_0x01fd;
                case 115: goto L_0x01fd;
                default: goto L_0x01e7;
            }
        L_0x01e7:
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x01ea:
            if (r21 < 0) goto L_0x01f0
            java.lang.String r4 = "duplicate '.' in number"
            goto L_0x000a
        L_0x01f0:
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x01fa
            java.lang.String r4 = "'.' in non-decimal number"
            goto L_0x000a
        L_0x01fa:
            int r21 = r13 + -1
            goto L_0x01a6
        L_0x01fd:
            r0 = r26
            if (r13 == r0) goto L_0x0207
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x020a
        L_0x0207:
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x020a:
            char r37 = r54[r13]
            int r28 = r13 + -1
            r5 = 43
            r0 = r37
            if (r0 == r5) goto L_0x021a
            r5 = 45
            r0 = r37
            if (r0 != r5) goto L_0x022e
        L_0x021a:
            int r13 = r13 + 1
            r0 = r26
            if (r13 >= r0) goto L_0x022a
            char r5 = r54[r13]
            r7 = 10
            int r5 = java.lang.Character.digit(r5, r7)
            if (r5 >= 0) goto L_0x023c
        L_0x022a:
            java.lang.String r4 = "missing exponent digits"
            goto L_0x000a
        L_0x022e:
            r5 = 10
            r0 = r37
            int r5 = java.lang.Character.digit(r0, r5)
            if (r5 >= 0) goto L_0x023c
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x023c:
            if (r29 < 0) goto L_0x0242
            java.lang.String r4 = "duplicate exponent"
            goto L_0x000a
        L_0x0242:
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x024c
            java.lang.String r4 = "exponent in non-decimal number"
            goto L_0x000a
        L_0x024c:
            if (r6 >= 0) goto L_0x0252
            java.lang.String r4 = "mantissa with no digits"
            goto L_0x000a
        L_0x0252:
            r29 = r28
        L_0x0254:
            int r13 = r13 + 1
            r0 = r26
            if (r13 >= r0) goto L_0x01aa
            char r5 = r54[r13]
            r7 = 10
            int r5 = java.lang.Character.digit(r5, r7)
            if (r5 >= 0) goto L_0x0254
            goto L_0x01aa
        L_0x0266:
            if (r40 == 0) goto L_0x026c
            java.lang.String r4 = "multiple fraction symbol '/'"
            goto L_0x000a
        L_0x026c:
            if (r6 >= 0) goto L_0x0272
            java.lang.String r4 = "no digits before fraction symbol '/'"
            goto L_0x000a
        L_0x0272:
            if (r29 >= 0) goto L_0x0276
            if (r21 < 0) goto L_0x027a
        L_0x0276:
            java.lang.String r4 = "fraction symbol '/' following exponent or '.'"
            goto L_0x000a
        L_0x027a:
            int r7 = r13 - r6
            r5 = r54
            r8 = r58
            gnu.math.IntNum r40 = valueOf(r5, r6, r7, r8, r9, r10)
            r6 = -1
            r10 = 0
            r9 = 0
            r30 = 0
            r52 = 0
            goto L_0x01a6
        L_0x028e:
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0185
        L_0x0296:
            char r5 = r54[r13]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 1
            char r5 = r54[r5]
            r7 = 97
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 2
            char r5 = r54[r5]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x01de
            r34 = 110(0x6e, float:1.54E-43)
            goto L_0x01de
        L_0x02b0:
            int r13 = r13 + 5
            r43 = r13
        L_0x02b4:
            if (r30 != 0) goto L_0x02b8
            if (r52 == 0) goto L_0x02b8
        L_0x02b8:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r57
            if (r0 == r5) goto L_0x02cc
            r5 = 73
            r0 = r57
            if (r0 == r5) goto L_0x02cc
            r5 = 32
            r0 = r57
            if (r0 != r5) goto L_0x0328
            if (r30 == 0) goto L_0x0328
        L_0x02cc:
            r33 = 1
        L_0x02ce:
            r38 = 0
            r27 = 0
            if (r34 == 0) goto L_0x032e
            r33 = 1
            r5 = 105(0x69, float:1.47E-43)
            r0 = r34
            if (r0 != r5) goto L_0x032b
            r22 = 9218868437227405312(0x7ff0000000000000, double:Infinity)
        L_0x02de:
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r9 == 0) goto L_0x02e7
            r0 = r22
            double r0 = -r0
            r22 = r0
        L_0x02e7:
            r0 = r38
            r1 = r22
            r0.<init>(r1)
        L_0x02ee:
            r5 = 101(0x65, float:1.42E-43)
            r0 = r57
            if (r0 == r5) goto L_0x02fa
            r5 = 69
            r0 = r57
            if (r0 != r5) goto L_0x02fe
        L_0x02fa:
            gnu.math.RatNum r38 = r38.toExact()
        L_0x02fe:
            r0 = r43
            r1 = r26
            if (r0 >= r1) goto L_0x04d7
            int r13 = r43 + 1
            char r18 = r54[r43]
            r5 = 64
            r0 = r18
            if (r0 != r5) goto L_0x042c
            int r14 = r26 - r13
            r16 = 10
            r12 = r54
            r15 = r57
            r17 = r59
            java.lang.Object r4 = parseNumber(r12, r13, r14, r15, r16, r17)
            boolean r5 = r4 instanceof java.lang.String
            if (r5 != 0) goto L_0x000a
            boolean r5 = r4 instanceof gnu.math.RealNum
            if (r5 != 0) goto L_0x0409
            java.lang.String r4 = "invalid complex polar constant"
            goto L_0x000a
        L_0x0328:
            r33 = 0
            goto L_0x02ce
        L_0x032b:
            r22 = 9221120237041090560(0x7ff8000000000000, double:NaN)
            goto L_0x02de
        L_0x032e:
            if (r29 >= 0) goto L_0x0332
            if (r21 < 0) goto L_0x039b
        L_0x0332:
            r0 = r21
            if (r6 <= r0) goto L_0x033a
            if (r21 < 0) goto L_0x033a
            r6 = r21
        L_0x033a:
            if (r40 == 0) goto L_0x0342
            java.lang.String r4 = "floating-point number after fraction symbol '/'"
            r13 = r43
            goto L_0x000a
        L_0x0342:
            java.lang.String r51 = new java.lang.String
            int r5 = r43 - r6
            r0 = r51
            r1 = r54
            r0.<init>(r1, r6, r5)
            if (r29 < 0) goto L_0x0385
            char r5 = r54[r29]
            char r27 = java.lang.Character.toLowerCase(r5)
            r5 = 101(0x65, float:1.42E-43)
            r0 = r27
            if (r0 == r5) goto L_0x0385
            int r44 = r29 - r6
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            r7 = 0
            r0 = r51
            r1 = r44
            java.lang.String r7 = r0.substring(r7, r1)
            java.lang.StringBuilder r5 = r5.append(r7)
            r7 = 101(0x65, float:1.42E-43)
            java.lang.StringBuilder r5 = r5.append(r7)
            int r7 = r44 + 1
            r0 = r51
            java.lang.String r7 = r0.substring(r7)
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r51 = r5.toString()
        L_0x0385:
            double r22 = gnu.lists.Convert.parseDouble(r51)
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r9 == 0) goto L_0x0392
            r0 = r22
            double r0 = -r0
            r22 = r0
        L_0x0392:
            r0 = r38
            r1 = r22
            r0.<init>(r1)
            goto L_0x02ee
        L_0x039b:
            int r7 = r43 - r6
            r5 = r54
            r8 = r58
            gnu.math.IntNum r35 = valueOf(r5, r6, r7, r8, r9, r10)
            if (r40 != 0) goto L_0x03c6
            r38 = r35
            r39 = r38
        L_0x03ab:
            if (r33 == 0) goto L_0x050d
            boolean r5 = r39.isExact()
            if (r5 == 0) goto L_0x050d
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r41 == 0) goto L_0x0404
            boolean r5 = r39.isZero()
            if (r5 == 0) goto L_0x0404
            r14 = -9223372036854775808
        L_0x03bf:
            r0 = r38
            r0.<init>(r14)
            goto L_0x02ee
        L_0x03c6:
            boolean r5 = r35.isZero()
            if (r5 == 0) goto L_0x03f9
            boolean r42 = r40.isZero()
            if (r33 == 0) goto L_0x03e8
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r42 == 0) goto L_0x03e0
            r14 = 9221120237041090560(0x7ff8000000000000, double:NaN)
        L_0x03d8:
            r0 = r38
            r0.<init>(r14)
        L_0x03dd:
            r39 = r38
            goto L_0x03ab
        L_0x03e0:
            if (r41 == 0) goto L_0x03e5
            r14 = -4503599627370496(0xfff0000000000000, double:-Infinity)
            goto L_0x03d8
        L_0x03e5:
            r14 = 9218868437227405312(0x7ff0000000000000, double:Infinity)
            goto L_0x03d8
        L_0x03e8:
            if (r42 == 0) goto L_0x03f0
            java.lang.String r4 = "0/0 is undefined"
            r13 = r43
            goto L_0x000a
        L_0x03f0:
            r0 = r40
            r1 = r35
            gnu.math.RatNum r38 = gnu.math.RatNum.make(r0, r1)
            goto L_0x03dd
        L_0x03f9:
            r0 = r40
            r1 = r35
            gnu.math.RatNum r38 = gnu.math.RatNum.make(r0, r1)
            r39 = r38
            goto L_0x03ab
        L_0x0404:
            double r14 = r39.doubleValue()
            goto L_0x03bf
        L_0x0409:
            r46 = r4
            gnu.math.RealNum r46 = (gnu.math.RealNum) r46
            boolean r5 = r38.isZero()
            if (r5 == 0) goto L_0x0422
            boolean r5 = r46.isExact()
            if (r5 != 0) goto L_0x0422
            gnu.math.DFloNum r4 = new gnu.math.DFloNum
            r14 = 0
            r4.<init>(r14)
            goto L_0x000a
        L_0x0422:
            r0 = r38
            r1 = r46
            gnu.math.DComplex r4 = gnu.math.Complex.polar(r0, r1)
            goto L_0x000a
        L_0x042c:
            r5 = 45
            r0 = r18
            if (r0 == r5) goto L_0x0438
            r5 = 43
            r0 = r18
            if (r0 != r5) goto L_0x0493
        L_0x0438:
            int r13 = r13 + -1
            int r14 = r26 - r13
            r16 = 10
            r12 = r54
            r15 = r57
            r17 = r59
            java.lang.Object r32 = parseNumber(r12, r13, r14, r15, r16, r17)
            r0 = r32
            boolean r5 = r0 instanceof java.lang.String
            if (r5 == 0) goto L_0x0452
            r4 = r32
            goto L_0x000a
        L_0x0452:
            r0 = r32
            boolean r5 = r0 instanceof gnu.math.Complex
            if (r5 != 0) goto L_0x0475
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            java.lang.String r7 = "invalid numeric constant ("
            java.lang.StringBuilder r5 = r5.append(r7)
            r0 = r32
            java.lang.StringBuilder r5 = r5.append(r0)
            java.lang.String r7 = ")"
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r4 = r5.toString()
            goto L_0x000a
        L_0x0475:
            r19 = r32
            gnu.math.Complex r19 = (gnu.math.Complex) r19
            gnu.math.RealNum r47 = r19.mo11415re()
            boolean r5 = r47.isZero()
            if (r5 != 0) goto L_0x0487
            java.lang.String r4 = "invalid numeric constant"
            goto L_0x000a
        L_0x0487:
            gnu.math.RealNum r5 = r19.mo11414im()
            r0 = r38
            gnu.math.Complex r4 = gnu.math.Complex.make(r0, r5)
            goto L_0x000a
        L_0x0493:
            r36 = 0
        L_0x0495:
            boolean r5 = java.lang.Character.isLetter(r18)
            if (r5 != 0) goto L_0x04ba
            int r13 = r13 + -1
        L_0x049d:
            r5 = 1
            r0 = r36
            if (r0 != r5) goto L_0x04d3
            int r5 = r13 + -1
            char r45 = r54[r5]
            r5 = 105(0x69, float:1.47E-43)
            r0 = r45
            if (r0 == r5) goto L_0x04b2
            r5 = 73
            r0 = r45
            if (r0 != r5) goto L_0x04d3
        L_0x04b2:
            r0 = r26
            if (r13 >= r0) goto L_0x04c7
            java.lang.String r4 = "junk after imaginary suffix 'i'"
            goto L_0x000a
        L_0x04ba:
            int r36 = r36 + 1
            r0 = r26
            if (r13 == r0) goto L_0x049d
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0495
        L_0x04c7:
            gnu.math.IntNum r5 = gnu.math.IntNum.zero()
            r0 = r38
            gnu.math.Complex r4 = gnu.math.Complex.make(r5, r0)
            goto L_0x000a
        L_0x04d3:
            java.lang.String r4 = "excess junk after number"
            goto L_0x000a
        L_0x04d7:
            r0 = r38
            boolean r5 = r0 instanceof gnu.math.DFloNum
            if (r5 == 0) goto L_0x04ec
            if (r27 <= 0) goto L_0x04ec
            r5 = 101(0x65, float:1.42E-43)
            r0 = r27
            if (r0 == r5) goto L_0x04ec
            double r22 = r38.doubleValue()
            switch(r27) {
                case 100: goto L_0x04fd;
                case 102: goto L_0x04f2;
                case 108: goto L_0x0505;
                case 115: goto L_0x04f2;
                default: goto L_0x04ec;
            }
        L_0x04ec:
            r13 = r43
            r4 = r38
            goto L_0x000a
        L_0x04f2:
            r0 = r22
            float r5 = (float) r0
            java.lang.Float r4 = java.lang.Float.valueOf(r5)
            r13 = r43
            goto L_0x000a
        L_0x04fd:
            java.lang.Double r4 = java.lang.Double.valueOf(r22)
            r13 = r43
            goto L_0x000a
        L_0x0505:
            java.math.BigDecimal r4 = java.math.BigDecimal.valueOf(r22)
            r13 = r43
            goto L_0x000a
        L_0x050d:
            r38 = r39
            goto L_0x02ee
        L_0x0511:
            r43 = r13
            goto L_0x02b4
        L_0x0515:
            r13 = r43
            goto L_0x011c
        */
        throw new UnsupportedOperationException("Method not decompiled: gnu.kawa.lispexpr.LispReader.parseNumber(char[], int, int, char, int, int):java.lang.Object");
    }
public static java . lang . Object parseNumber ( char [ ] r54 , int r55 , int r56 , char r57 , int r58 , int r59 ) { /*
            int r26 = r55 + r56
            r13 = r55
            r0 = r26
            if (r13 < r0) goto L_0x000b
            java.lang.String r4 = "no digits"
        L_0x000a:
            return r4
        L_0x000b:
            int r43 = r13 + 1
            char r18 = r54[r13]
        L_0x000f:
            r5 = 35
            r0 = r18
            if (r0 != r5) goto L_0x00d5
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x0020
            java.lang.String r4 = "no digits"
            r13 = r43
            goto L_0x000a
        L_0x0020:
            int r13 = r43 + 1
            char r18 = r54[r43]
            switch(r18) {
                case 66: goto L_0x0044;
                case 68: goto L_0x0062;
                case 69: goto L_0x0076;
                case 73: goto L_0x0076;
                case 79: goto L_0x0058;
                case 88: goto L_0x006c;
                case 98: goto L_0x0044;
                case 100: goto L_0x0062;
                case 101: goto L_0x0076;
                case 105: goto L_0x0076;
                case 111: goto L_0x0058;
                case 120: goto L_0x006c;
                default: goto L_0x0027;
            }
        L_0x0027:
            r53 = 0
        L_0x0029:
            r5 = 10
            r0 = r18
            int r24 = java.lang.Character.digit(r0, r5)
            if (r24 >= 0) goto L_0x0089
            r5 = 82
            r0 = r18
            if (r0 == r5) goto L_0x003f
            r5 = 114(0x72, float:1.6E-43)
            r0 = r18
            if (r0 != r5) goto L_0x00b0
        L_0x003f:
            if (r58 == 0) goto L_0x009c
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0044:
            if (r58 == 0) goto L_0x0049
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0049:
            r58 = 2
            r43 = r13
        L_0x004d:
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x00cd
            java.lang.String r4 = "no digits"
            r13 = r43
            goto L_0x000a
        L_0x0058:
            if (r58 == 0) goto L_0x005d
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x005d:
            r58 = 8
            r43 = r13
            goto L_0x004d
        L_0x0062:
            if (r58 == 0) goto L_0x0067
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0067:
            r58 = 10
            r43 = r13
            goto L_0x004d
        L_0x006c:
            if (r58 == 0) goto L_0x0071
            java.lang.String r4 = "duplicate radix specifier"
            goto L_0x000a
        L_0x0071:
            r58 = 16
            r43 = r13
            goto L_0x004d
        L_0x0076:
            if (r57 == 0) goto L_0x0084
            r5 = 32
            r0 = r57
            if (r0 != r5) goto L_0x0081
            java.lang.String r4 = "non-prefix exactness specifier"
            goto L_0x000a
        L_0x0081:
            java.lang.String r4 = "duplicate exactness specifier"
            goto L_0x000a
        L_0x0084:
            r57 = r18
            r43 = r13
            goto L_0x004d
        L_0x0089:
            int r5 = r53 * 10
            int r53 = r5 + r24
            r0 = r26
            if (r13 < r0) goto L_0x0095
            java.lang.String r4 = "missing letter after '#'"
            goto L_0x000a
        L_0x0095:
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0029
        L_0x009c:
            r5 = 2
            r0 = r53
            if (r0 < r5) goto L_0x00a7
            r5 = 35
            r0 = r53
            if (r0 <= r5) goto L_0x00ab
        L_0x00a7:
            java.lang.String r4 = "invalid radix specifier"
            goto L_0x000a
        L_0x00ab:
            r58 = r53
            r43 = r13
            goto L_0x004d
        L_0x00b0:
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            java.lang.String r7 = "unknown modifier '#"
            java.lang.StringBuilder r5 = r5.append(r7)
            r0 = r18
            java.lang.StringBuilder r5 = r5.append(r0)
            r7 = 39
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r4 = r5.toString()
            goto L_0x000a
        L_0x00cd:
            int r13 = r43 + 1
            char r18 = r54[r43]
            r43 = r13
            goto L_0x000f
        L_0x00d5:
            if (r57 != 0) goto L_0x00d9
            r57 = 32
        L_0x00d9:
            if (r58 != 0) goto L_0x00e3
            r31 = r56
        L_0x00dd:
            int r31 = r31 + -1
            if (r31 >= 0) goto L_0x0108
            r58 = 10
        L_0x00e3:
            r5 = 45
            r0 = r18
            if (r0 != r5) goto L_0x0113
            r9 = 1
        L_0x00ea:
            r41 = r9
            r5 = 45
            r0 = r18
            if (r0 == r5) goto L_0x00f8
            r5 = 43
            r0 = r18
            if (r0 != r5) goto L_0x0115
        L_0x00f8:
            r50 = 1
        L_0x00fa:
            if (r50 == 0) goto L_0x0515
            r0 = r43
            r1 = r26
            if (r0 < r1) goto L_0x0118
            java.lang.String r4 = "no digits following sign"
            r13 = r43
            goto L_0x000a
        L_0x0108:
            int r5 = r55 + r31
            char r5 = r54[r5]
            r7 = 46
            if (r5 != r7) goto L_0x00dd
            r58 = 10
            goto L_0x00e3
        L_0x0113:
            r9 = 0
            goto L_0x00ea
        L_0x0115:
            r50 = 0
            goto L_0x00fa
        L_0x0118:
            int r13 = r43 + 1
            char r18 = r54[r43]
        L_0x011c:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r18
            if (r0 == r5) goto L_0x0128
            r5 = 73
            r0 = r18
            if (r0 != r5) goto L_0x0174
        L_0x0128:
            r0 = r26
            if (r13 != r0) goto L_0x0174
            int r5 = r13 + -2
            r0 = r55
            if (r0 != r5) goto L_0x0174
            r5 = r59 & 1
            if (r5 == 0) goto L_0x0174
            char r49 = r54[r55]
            r5 = 43
            r0 = r49
            if (r0 == r5) goto L_0x0148
            r5 = 45
            r0 = r49
            if (r0 == r5) goto L_0x0148
            java.lang.String r4 = "no digits"
            goto L_0x000a
        L_0x0148:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r57
            if (r0 == r5) goto L_0x0154
            r5 = 73
            r0 = r57
            if (r0 != r5) goto L_0x0166
        L_0x0154:
            gnu.math.DComplex r4 = new gnu.math.DComplex
            r16 = 0
            if (r9 == 0) goto L_0x0163
            r14 = -4616189618054758400(0xbff0000000000000, double:-1.0)
        L_0x015c:
            r0 = r16
            r4.<init>(r0, r14)
            goto L_0x000a
        L_0x0163:
            r14 = 4607182418800017408(0x3ff0000000000000, double:1.0)
            goto L_0x015c
        L_0x0166:
            if (r9 == 0) goto L_0x016f
            gnu.math.CComplex r5 = gnu.math.Complex.imMinusOne()
        L_0x016c:
            r4 = r5
            goto L_0x000a
        L_0x016f:
            gnu.math.CComplex r5 = gnu.math.Complex.imOne()
            goto L_0x016c
        L_0x0174:
            int r48 = r13 + -1
            r30 = 0
            r29 = -1
            r6 = -1
            r21 = -1
            r20 = 0
            r52 = 0
            r40 = 0
            r10 = 0
        L_0x0185:
            r0 = r18
            r1 = r58
            int r25 = java.lang.Character.digit(r0, r1)
            if (r25 < 0) goto L_0x01e4
            if (r30 == 0) goto L_0x0197
            if (r21 >= 0) goto L_0x0197
            java.lang.String r4 = "digit after '#' in number"
            goto L_0x000a
        L_0x0197:
            if (r6 >= 0) goto L_0x019b
            int r6 = r13 + -1
        L_0x019b:
            r0 = r58
            long r14 = (long) r0
            long r14 = r14 * r10
            r0 = r25
            long r0 = (long) r0
            r16 = r0
            long r10 = r14 + r16
        L_0x01a6:
            r0 = r26
            if (r13 != r0) goto L_0x028e
        L_0x01aa:
            r34 = 0
            if (r6 >= 0) goto L_0x0511
            if (r50 == 0) goto L_0x01de
            int r5 = r13 + 4
            r0 = r26
            if (r5 >= r0) goto L_0x01de
            int r5 = r13 + 3
            char r5 = r54[r5]
            r7 = 46
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 4
            char r5 = r54[r5]
            r7 = 48
            if (r5 != r7) goto L_0x01de
            char r5 = r54[r13]
            r7 = 105(0x69, float:1.47E-43)
            if (r5 != r7) goto L_0x0296
            int r5 = r13 + 1
            char r5 = r54[r5]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x0296
            int r5 = r13 + 2
            char r5 = r54[r5]
            r7 = 102(0x66, float:1.43E-43)
            if (r5 != r7) goto L_0x0296
            r34 = 105(0x69, float:1.47E-43)
        L_0x01de:
            if (r34 != 0) goto L_0x02b0
            java.lang.String r4 = "no digits"
            goto L_0x000a
        L_0x01e4:
            switch(r18) {
                case 46: goto L_0x01ea;
                case 47: goto L_0x0266;
                case 68: goto L_0x01fd;
                case 69: goto L_0x01fd;
                case 70: goto L_0x01fd;
                case 76: goto L_0x01fd;
                case 83: goto L_0x01fd;
                case 100: goto L_0x01fd;
                case 101: goto L_0x01fd;
                case 102: goto L_0x01fd;
                case 108: goto L_0x01fd;
                case 115: goto L_0x01fd;
                default: goto L_0x01e7;
            }
        L_0x01e7:
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x01ea:
            if (r21 < 0) goto L_0x01f0
            java.lang.String r4 = "duplicate '.' in number"
            goto L_0x000a
        L_0x01f0:
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x01fa
            java.lang.String r4 = "'.' in non-decimal number"
            goto L_0x000a
        L_0x01fa:
            int r21 = r13 + -1
            goto L_0x01a6
        L_0x01fd:
            r0 = r26
            if (r13 == r0) goto L_0x0207
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x020a
        L_0x0207:
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x020a:
            char r37 = r54[r13]
            int r28 = r13 + -1
            r5 = 43
            r0 = r37
            if (r0 == r5) goto L_0x021a
            r5 = 45
            r0 = r37
            if (r0 != r5) goto L_0x022e
        L_0x021a:
            int r13 = r13 + 1
            r0 = r26
            if (r13 >= r0) goto L_0x022a
            char r5 = r54[r13]
            r7 = 10
            int r5 = java.lang.Character.digit(r5, r7)
            if (r5 >= 0) goto L_0x023c
        L_0x022a:
            java.lang.String r4 = "missing exponent digits"
            goto L_0x000a
        L_0x022e:
            r5 = 10
            r0 = r37
            int r5 = java.lang.Character.digit(r0, r5)
            if (r5 >= 0) goto L_0x023c
            int r13 = r13 + -1
            goto L_0x01aa
        L_0x023c:
            if (r29 < 0) goto L_0x0242
            java.lang.String r4 = "duplicate exponent"
            goto L_0x000a
        L_0x0242:
            r5 = 10
            r0 = r58
            if (r0 == r5) goto L_0x024c
            java.lang.String r4 = "exponent in non-decimal number"
            goto L_0x000a
        L_0x024c:
            if (r6 >= 0) goto L_0x0252
            java.lang.String r4 = "mantissa with no digits"
            goto L_0x000a
        L_0x0252:
            r29 = r28
        L_0x0254:
            int r13 = r13 + 1
            r0 = r26
            if (r13 >= r0) goto L_0x01aa
            char r5 = r54[r13]
            r7 = 10
            int r5 = java.lang.Character.digit(r5, r7)
            if (r5 >= 0) goto L_0x0254
            goto L_0x01aa
        L_0x0266:
            if (r40 == 0) goto L_0x026c
            java.lang.String r4 = "multiple fraction symbol '/'"
            goto L_0x000a
        L_0x026c:
            if (r6 >= 0) goto L_0x0272
            java.lang.String r4 = "no digits before fraction symbol '/'"
            goto L_0x000a
        L_0x0272:
            if (r29 >= 0) goto L_0x0276
            if (r21 < 0) goto L_0x027a
        L_0x0276:
            java.lang.String r4 = "fraction symbol '/' following exponent or '.'"
            goto L_0x000a
        L_0x027a:
            int r7 = r13 - r6
            r5 = r54
            r8 = r58
            gnu.math.IntNum r40 = valueOf(r5, r6, r7, r8, r9, r10)
            r6 = -1
            r10 = 0
            r9 = 0
            r30 = 0
            r52 = 0
            goto L_0x01a6
        L_0x028e:
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0185
        L_0x0296:
            char r5 = r54[r13]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 1
            char r5 = r54[r5]
            r7 = 97
            if (r5 != r7) goto L_0x01de
            int r5 = r13 + 2
            char r5 = r54[r5]
            r7 = 110(0x6e, float:1.54E-43)
            if (r5 != r7) goto L_0x01de
            r34 = 110(0x6e, float:1.54E-43)
            goto L_0x01de
        L_0x02b0:
            int r13 = r13 + 5
            r43 = r13
        L_0x02b4:
            if (r30 != 0) goto L_0x02b8
            if (r52 == 0) goto L_0x02b8
        L_0x02b8:
            r5 = 105(0x69, float:1.47E-43)
            r0 = r57
            if (r0 == r5) goto L_0x02cc
            r5 = 73
            r0 = r57
            if (r0 == r5) goto L_0x02cc
            r5 = 32
            r0 = r57
            if (r0 != r5) goto L_0x0328
            if (r30 == 0) goto L_0x0328
        L_0x02cc:
            r33 = 1
        L_0x02ce:
            r38 = 0
            r27 = 0
            if (r34 == 0) goto L_0x032e
            r33 = 1
            r5 = 105(0x69, float:1.47E-43)
            r0 = r34
            if (r0 != r5) goto L_0x032b
            r22 = 9218868437227405312(0x7ff0000000000000, double:Infinity)
        L_0x02de:
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r9 == 0) goto L_0x02e7
            r0 = r22
            double r0 = -r0
            r22 = r0
        L_0x02e7:
            r0 = r38
            r1 = r22
            r0.<init>(r1)
        L_0x02ee:
            r5 = 101(0x65, float:1.42E-43)
            r0 = r57
            if (r0 == r5) goto L_0x02fa
            r5 = 69
            r0 = r57
            if (r0 != r5) goto L_0x02fe
        L_0x02fa:
            gnu.math.RatNum r38 = r38.toExact()
        L_0x02fe:
            r0 = r43
            r1 = r26
            if (r0 >= r1) goto L_0x04d7
            int r13 = r43 + 1
            char r18 = r54[r43]
            r5 = 64
            r0 = r18
            if (r0 != r5) goto L_0x042c
            int r14 = r26 - r13
            r16 = 10
            r12 = r54
            r15 = r57
            r17 = r59
            java.lang.Object r4 = parseNumber(r12, r13, r14, r15, r16, r17)
            boolean r5 = r4 instanceof java.lang.String
            if (r5 != 0) goto L_0x000a
            boolean r5 = r4 instanceof gnu.math.RealNum
            if (r5 != 0) goto L_0x0409
            java.lang.String r4 = "invalid complex polar constant"
            goto L_0x000a
        L_0x0328:
            r33 = 0
            goto L_0x02ce
        L_0x032b:
            r22 = 9221120237041090560(0x7ff8000000000000, double:NaN)
            goto L_0x02de
        L_0x032e:
            if (r29 >= 0) goto L_0x0332
            if (r21 < 0) goto L_0x039b
        L_0x0332:
            r0 = r21
            if (r6 <= r0) goto L_0x033a
            if (r21 < 0) goto L_0x033a
            r6 = r21
        L_0x033a:
            if (r40 == 0) goto L_0x0342
            java.lang.String r4 = "floating-point number after fraction symbol '/'"
            r13 = r43
            goto L_0x000a
        L_0x0342:
            java.lang.String r51 = new java.lang.String
            int r5 = r43 - r6
            r0 = r51
            r1 = r54
            r0.<init>(r1, r6, r5)
            if (r29 < 0) goto L_0x0385
            char r5 = r54[r29]
            char r27 = java.lang.Character.toLowerCase(r5)
            r5 = 101(0x65, float:1.42E-43)
            r0 = r27
            if (r0 == r5) goto L_0x0385
            int r44 = r29 - r6
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            r7 = 0
            r0 = r51
            r1 = r44
            java.lang.String r7 = r0.substring(r7, r1)
            java.lang.StringBuilder r5 = r5.append(r7)
            r7 = 101(0x65, float:1.42E-43)
            java.lang.StringBuilder r5 = r5.append(r7)
            int r7 = r44 + 1
            r0 = r51
            java.lang.String r7 = r0.substring(r7)
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r51 = r5.toString()
        L_0x0385:
            double r22 = gnu.lists.Convert.parseDouble(r51)
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r9 == 0) goto L_0x0392
            r0 = r22
            double r0 = -r0
            r22 = r0
        L_0x0392:
            r0 = r38
            r1 = r22
            r0.<init>(r1)
            goto L_0x02ee
        L_0x039b:
            int r7 = r43 - r6
            r5 = r54
            r8 = r58
            gnu.math.IntNum r35 = valueOf(r5, r6, r7, r8, r9, r10)
            if (r40 != 0) goto L_0x03c6
            r38 = r35
            r39 = r38
        L_0x03ab:
            if (r33 == 0) goto L_0x050d
            boolean r5 = r39.isExact()
            if (r5 == 0) goto L_0x050d
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r41 == 0) goto L_0x0404
            boolean r5 = r39.isZero()
            if (r5 == 0) goto L_0x0404
            r14 = -9223372036854775808
        L_0x03bf:
            r0 = r38
            r0.<init>(r14)
            goto L_0x02ee
        L_0x03c6:
            boolean r5 = r35.isZero()
            if (r5 == 0) goto L_0x03f9
            boolean r42 = r40.isZero()
            if (r33 == 0) goto L_0x03e8
            gnu.math.DFloNum r38 = new gnu.math.DFloNum
            if (r42 == 0) goto L_0x03e0
            r14 = 9221120237041090560(0x7ff8000000000000, double:NaN)
        L_0x03d8:
            r0 = r38
            r0.<init>(r14)
        L_0x03dd:
            r39 = r38
            goto L_0x03ab
        L_0x03e0:
            if (r41 == 0) goto L_0x03e5
            r14 = -4503599627370496(0xfff0000000000000, double:-Infinity)
            goto L_0x03d8
        L_0x03e5:
            r14 = 9218868437227405312(0x7ff0000000000000, double:Infinity)
            goto L_0x03d8
        L_0x03e8:
            if (r42 == 0) goto L_0x03f0
            java.lang.String r4 = "0/0 is undefined"
            r13 = r43
            goto L_0x000a
        L_0x03f0:
            r0 = r40
            r1 = r35
            gnu.math.RatNum r38 = gnu.math.RatNum.make(r0, r1)
            goto L_0x03dd
        L_0x03f9:
            r0 = r40
            r1 = r35
            gnu.math.RatNum r38 = gnu.math.RatNum.make(r0, r1)
            r39 = r38
            goto L_0x03ab
        L_0x0404:
            double r14 = r39.doubleValue()
            goto L_0x03bf
        L_0x0409:
            r46 = r4
            gnu.math.RealNum r46 = (gnu.math.RealNum) r46
            boolean r5 = r38.isZero()
            if (r5 == 0) goto L_0x0422
            boolean r5 = r46.isExact()
            if (r5 != 0) goto L_0x0422
            gnu.math.DFloNum r4 = new gnu.math.DFloNum
            r14 = 0
            r4.<init>(r14)
            goto L_0x000a
        L_0x0422:
            r0 = r38
            r1 = r46
            gnu.math.DComplex r4 = gnu.math.Complex.polar(r0, r1)
            goto L_0x000a
        L_0x042c:
            r5 = 45
            r0 = r18
            if (r0 == r5) goto L_0x0438
            r5 = 43
            r0 = r18
            if (r0 != r5) goto L_0x0493
        L_0x0438:
            int r13 = r13 + -1
            int r14 = r26 - r13
            r16 = 10
            r12 = r54
            r15 = r57
            r17 = r59
            java.lang.Object r32 = parseNumber(r12, r13, r14, r15, r16, r17)
            r0 = r32
            boolean r5 = r0 instanceof java.lang.String
            if (r5 == 0) goto L_0x0452
            r4 = r32
            goto L_0x000a
        L_0x0452:
            r0 = r32
            boolean r5 = r0 instanceof gnu.math.Complex
            if (r5 != 0) goto L_0x0475
            java.lang.StringBuilder r5 = new java.lang.StringBuilder
            r5.<init>()
            java.lang.String r7 = "invalid numeric constant ("
            java.lang.StringBuilder r5 = r5.append(r7)
            r0 = r32
            java.lang.StringBuilder r5 = r5.append(r0)
            java.lang.String r7 = ")"
            java.lang.StringBuilder r5 = r5.append(r7)
            java.lang.String r4 = r5.toString()
            goto L_0x000a
        L_0x0475:
            r19 = r32
            gnu.math.Complex r19 = (gnu.math.Complex) r19
            gnu.math.RealNum r47 = r19.mo11415re()
            boolean r5 = r47.isZero()
            if (r5 != 0) goto L_0x0487
            java.lang.String r4 = "invalid numeric constant"
            goto L_0x000a
        L_0x0487:
            gnu.math.RealNum r5 = r19.mo11414im()
            r0 = r38
            gnu.math.Complex r4 = gnu.math.Complex.make(r0, r5)
            goto L_0x000a
        L_0x0493:
            r36 = 0
        L_0x0495:
            boolean r5 = java.lang.Character.isLetter(r18)
            if (r5 != 0) goto L_0x04ba
            int r13 = r13 + -1
        L_0x049d:
            r5 = 1
            r0 = r36
            if (r0 != r5) goto L_0x04d3
            int r5 = r13 + -1
            char r45 = r54[r5]
            r5 = 105(0x69, float:1.47E-43)
            r0 = r45
            if (r0 == r5) goto L_0x04b2
            r5 = 73
            r0 = r45
            if (r0 != r5) goto L_0x04d3
        L_0x04b2:
            r0 = r26
            if (r13 >= r0) goto L_0x04c7
            java.lang.String r4 = "junk after imaginary suffix 'i'"
            goto L_0x000a
        L_0x04ba:
            int r36 = r36 + 1
            r0 = r26
            if (r13 == r0) goto L_0x049d
            int r43 = r13 + 1
            char r18 = r54[r13]
            r13 = r43
            goto L_0x0495
        L_0x04c7:
            gnu.math.IntNum r5 = gnu.math.IntNum.zero()
            r0 = r38
            gnu.math.Complex r4 = gnu.math.Complex.make(r5, r0)
            goto L_0x000a
        L_0x04d3:
            java.lang.String r4 = "excess junk after number"
            goto L_0x000a
        L_0x04d7:
            r0 = r38
            boolean r5 = r0 instanceof gnu.math.DFloNum
            if (r5 == 0) goto L_0x04ec
            if (r27 <= 0) goto L_0x04ec
            r5 = 101(0x65, float:1.42E-43)
            r0 = r27
            if (r0 == r5) goto L_0x04ec
            double r22 = r38.doubleValue()
            switch(r27) {
                case 100: goto L_0x04fd;
                case 102: goto L_0x04f2;
                case 108: goto L_0x0505;
                case 115: goto L_0x04f2;
                default: goto L_0x04ec;
            }
        L_0x04ec:
            r13 = r43
            r4 = r38
            goto L_0x000a
        L_0x04f2:
            r0 = r22
            float r5 = (float) r0
            java.lang.Float r4 = java.lang.Float.valueOf(r5)
            r13 = r43
            goto L_0x000a
        L_0x04fd:
            java.lang.Double r4 = java.lang.Double.valueOf(r22)
            r13 = r43
            goto L_0x000a
        L_0x0505:
            java.math.BigDecimal r4 = java.math.BigDecimal.valueOf(r22)
            r13 = r43
            goto L_0x000a
        L_0x050d:
            r38 = r39
            goto L_0x02ee
        L_0x0511:
            r43 = r13
            goto L_0x02b4
        L_0x0515:
            r13 = r43
            goto L_0x011c
        */ throw new UnsupportedOperationException ( "Method not decompiled: gnu.kawa.lispexpr.LispReader.parseNumber(char[], int, int, char, int, int):java.lang.Object" ) ; }
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .