Source/sources/gnu/kawa/functions/CompileArith.java
public void compile(gnu.expr.ApplyExp r25, gnu.expr.Compilation r26, gnu.expr.Target r27) {
        /*
            r24 = this;
            gnu.expr.Expression[] r9 = r25.getArgs()
            int r15 = r9.length
            if (r15 != 0) goto L_0x0019
            r0 = r24
            gnu.mapping.Procedure r3 = r0.proc
            gnu.kawa.functions.ArithOp r3 = (gnu.kawa.functions.ArithOp) r3
            java.lang.Object r3 = r3.defaultResult()
            r0 = r26
            r1 = r27
            r0.compileConstant(r3, r1)
        L_0x0018:
            return
        L_0x0019:
            r3 = 1
            if (r15 == r3) goto L_0x0022
            r0 = r27
            boolean r3 = r0 instanceof gnu.expr.IgnoreTarget
            if (r3 == 0) goto L_0x0026
        L_0x0022:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0026:
            r3 = 0
            r3 = r9[r3]
            gnu.bytecode.Type r3 = r3.getType()
            int r6 = gnu.kawa.functions.Arithmetic.classifyType(r3)
            r3 = 1
            r3 = r9[r3]
            gnu.bytecode.Type r3 = r3.getType()
            int r7 = gnu.kawa.functions.Arithmetic.classifyType(r3)
            r0 = r24
            int r3 = r0.f55op
            int r14 = getReturnKind(r6, r7, r3)
            gnu.bytecode.Type r21 = gnu.kawa.functions.Arithmetic.kindType(r14)
            if (r14 == 0) goto L_0x004d
            r3 = 2
            if (r15 == r3) goto L_0x0051
        L_0x004d:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0051:
            gnu.bytecode.Type r19 = r27.getType()
            int r20 = gnu.kawa.functions.Arithmetic.classifyType(r19)
            r3 = 1
            r0 = r20
            if (r0 == r3) goto L_0x0063
            r3 = 2
            r0 = r20
            if (r0 != r3) goto L_0x00eb
        L_0x0063:
            r3 = 1
            if (r14 < r3) goto L_0x00eb
            r3 = 4
            if (r14 > r3) goto L_0x00eb
            r14 = r20
            r3 = 1
            r0 = r20
            if (r0 != r3) goto L_0x00e8
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.intType
        L_0x0072:
            r0 = r24
            int r3 = r0.f55op
            r4 = 4
            if (r3 < r4) goto L_0x0096
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 > r4) goto L_0x0096
            r0 = r24
            gnu.mapping.Procedure r12 = r0.proc
            gnu.kawa.functions.DivideOp r12 = (gnu.kawa.functions.DivideOp) r12
            int r3 = r12.f54op
            r4 = 4
            if (r3 != r4) goto L_0x0124
            r3 = 4
            if (r14 <= r3) goto L_0x0096
            r3 = 6
            if (r14 >= r3) goto L_0x0096
            r3 = 9
            if (r14 > r3) goto L_0x0124
        L_0x0096:
            r0 = r24
            int r3 = r0.f55op
            r4 = 4
            if (r3 != r4) goto L_0x0181
            r3 = 10
            if (r14 > r3) goto L_0x0181
            r3 = 8
            if (r14 == r3) goto L_0x0181
            r3 = 7
            if (r14 == r3) goto L_0x0181
            r3 = 6
            if (r14 == r3) goto L_0x00ae
            r3 = 4
            if (r14 <= r3) goto L_0x0174
        L_0x00ae:
            r3 = 6
            if (r14 != r3) goto L_0x0170
            gnu.kawa.lispexpr.LangObjType r11 = gnu.kawa.functions.Arithmetic.typeRatNum
        L_0x00b3:
            r23 = r11
            java.lang.String r3 = "divide"
            r4 = 2
            gnu.bytecode.Method r17 = r11.getDeclaredMethod(r3, r4)
        L_0x00bc:
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r23)
            r3 = 0
            r3 = r9[r3]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            r3 = 1
            r3 = r9[r3]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            gnu.bytecode.CodeAttr r3 = r26.getCode()
            r0 = r17
            r3.emitInvokeStatic(r0)
        L_0x00dd:
            r0 = r27
            r1 = r26
            r2 = r23
            r0.compileFromStack(r1, r2)
            goto L_0x0018
        L_0x00e8:
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.longType
            goto L_0x0072
        L_0x00eb:
            r3 = 8
            r0 = r20
            if (r0 == r3) goto L_0x00f6
            r3 = 7
            r0 = r20
            if (r0 != r3) goto L_0x010b
        L_0x00f6:
            r3 = 2
            if (r14 <= r3) goto L_0x010b
            r3 = 10
            if (r14 > r3) goto L_0x010b
            r14 = r20
            r3 = 7
            r0 = r20
            if (r0 != r3) goto L_0x0108
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.floatType
        L_0x0106:
            goto L_0x0072
        L_0x0108:
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.doubleType
            goto L_0x0106
        L_0x010b:
            r3 = 7
            if (r14 != r3) goto L_0x0112
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.floatType
            goto L_0x0072
        L_0x0112:
            r3 = 8
            if (r14 == r3) goto L_0x011a
            r3 = 9
            if (r14 != r3) goto L_0x0120
        L_0x011a:
            r14 = 8
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.doubleType
            goto L_0x0072
        L_0x0120:
            r23 = r21
            goto L_0x0072
        L_0x0124:
            int r3 = r12.f54op
            r4 = 5
            if (r3 != r4) goto L_0x0130
            r3 = 10
            if (r14 > r3) goto L_0x0130
            r3 = 7
            if (r14 != r3) goto L_0x0139
        L_0x0130:
            int r3 = r12.f54op
            r4 = 4
            if (r3 != r4) goto L_0x013d
            r3 = 10
            if (r14 != r3) goto L_0x013d
        L_0x0139:
            r14 = 8
            goto L_0x0096
        L_0x013d:
            int r3 = r12.f54op
            r4 = 7
            if (r3 == r4) goto L_0x014a
            int r3 = r12.f54op
            r4 = 6
            if (r3 != r4) goto L_0x015b
            r3 = 4
            if (r14 > r3) goto L_0x015b
        L_0x014a:
            int r3 = r12.getRoundingMode()
            r4 = 3
            if (r3 == r4) goto L_0x0096
            r3 = 4
            if (r14 == r3) goto L_0x0096
            r3 = 7
            if (r14 == r3) goto L_0x0096
            r3 = 8
            if (r14 == r3) goto L_0x0096
        L_0x015b:
            int r3 = r12.f54op
            r4 = 8
            if (r3 != r4) goto L_0x016b
            int r3 = r12.getRoundingMode()
            r4 = 3
            if (r3 == r4) goto L_0x0096
            r3 = 4
            if (r14 == r3) goto L_0x0096
        L_0x016b:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0170:
            gnu.kawa.lispexpr.LangObjType r11 = gnu.kawa.functions.Arithmetic.typeRealNum
            goto L_0x00b3
        L_0x0174:
            gnu.kawa.lispexpr.LangObjType r23 = gnu.kawa.functions.Arithmetic.typeIntNum
            gnu.kawa.lispexpr.LangObjType r3 = gnu.kawa.functions.Arithmetic.typeRatNum
            java.lang.String r4 = "make"
            r5 = 2
            gnu.bytecode.Method r17 = r3.getDeclaredMethod(r4, r5)
            goto L_0x00bc
        L_0x0181:
            r3 = 4
            if (r14 != r3) goto L_0x01df
            r0 = r24
            int r3 = r0.f55op
            r4 = 1
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 3
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 2
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 13
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 14
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 15
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 7
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 < r4) goto L_0x01df
            r0 = r24
            int r3 = r0.f55op
            r4 = 11
            if (r3 > r4) goto L_0x01df
        L_0x01d0:
            r3 = 0
            r4 = r9[r3]
            r3 = 1
            r5 = r9[r3]
            r3 = r24
            r8 = r26
            r3.compileIntNum(r4, r5, r6, r7, r8)
            goto L_0x00dd
        L_0x01df:
            r3 = 1
            if (r14 == r3) goto L_0x01fc
            r3 = 2
            if (r14 == r3) goto L_0x01fc
            r3 = 7
            if (r14 == r3) goto L_0x01ec
            r3 = 8
            if (r14 != r3) goto L_0x0269
        L_0x01ec:
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 <= r4) goto L_0x01fc
            r0 = r24
            int r3 = r0.f55op
            r4 = 13
            if (r3 < r4) goto L_0x0269
        L_0x01fc:
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r23)
            gnu.bytecode.CodeAttr r10 = r26.getCode()
            r13 = 0
        L_0x0205:
            if (r13 >= r15) goto L_0x00dd
            r3 = 1
            if (r13 != r3) goto L_0x0220
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 < r4) goto L_0x0220
            r0 = r24
            int r3 = r0.f55op
            r4 = 12
            if (r3 > r4) goto L_0x0220
            gnu.bytecode.PrimType r3 = gnu.bytecode.Type.intType
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r3)
        L_0x0220:
            r3 = r9[r13]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            if (r13 != 0) goto L_0x022e
        L_0x022b:
            int r13 = r13 + 1
            goto L_0x0205
        L_0x022e:
            switch(r14) {
                case 1: goto L_0x0232;
                case 2: goto L_0x0232;
                case 3: goto L_0x0231;
                case 4: goto L_0x0231;
                case 5: goto L_0x0231;
                case 6: goto L_0x0231;
                case 7: goto L_0x0232;
                case 8: goto L_0x0232;
                default: goto L_0x0231;
            }
        L_0x0231:
            goto L_0x022b
        L_0x0232:
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 != r4) goto L_0x025b
            r3 = 2
            gnu.bytecode.Type[] r0 = new gnu.bytecode.Type[r3]
            r16 = r0
            r3 = 0
            r16[r3] = r23
            r3 = 1
            gnu.bytecode.PrimType r4 = gnu.bytecode.Type.intType
            r16[r3] = r4
            java.lang.String r3 = "gnu.math.IntNum"
            gnu.bytecode.ClassType r3 = gnu.bytecode.ClassType.make(r3)
            java.lang.String r4 = "shift"
            r0 = r16
            gnu.bytecode.Method r18 = r3.getDeclaredMethod(r4, r0)
            r0 = r18
            r10.emitInvokeStatic(r0)
            goto L_0x022b
        L_0x025b:
            int r4 = r24.primitiveOpcode()
            gnu.bytecode.Type r3 = r23.getImplementationType()
            gnu.bytecode.PrimType r3 = (gnu.bytecode.PrimType) r3
            r10.emitBinop(r4, r3)
            goto L_0x022b
        L_0x0269:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        */
        throw new UnsupportedOperationException("Method not decompiled: gnu.kawa.functions.CompileArith.compile(gnu.expr.ApplyExp, gnu.expr.Compilation, gnu.expr.Target):void");
    }
/* 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 void compile(gnu.expr.ApplyExp r25, gnu.expr.Compilation r26, gnu.expr.Target r27) {
        /*
            r24 = this;
            gnu.expr.Expression[] r9 = r25.getArgs()
            int r15 = r9.length
            if (r15 != 0) goto L_0x0019
            r0 = r24
            gnu.mapping.Procedure r3 = r0.proc
            gnu.kawa.functions.ArithOp r3 = (gnu.kawa.functions.ArithOp) r3
            java.lang.Object r3 = r3.defaultResult()
            r0 = r26
            r1 = r27
            r0.compileConstant(r3, r1)
        L_0x0018:
            return
        L_0x0019:
            r3 = 1
            if (r15 == r3) goto L_0x0022
            r0 = r27
            boolean r3 = r0 instanceof gnu.expr.IgnoreTarget
            if (r3 == 0) goto L_0x0026
        L_0x0022:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0026:
            r3 = 0
            r3 = r9[r3]
            gnu.bytecode.Type r3 = r3.getType()
            int r6 = gnu.kawa.functions.Arithmetic.classifyType(r3)
            r3 = 1
            r3 = r9[r3]
            gnu.bytecode.Type r3 = r3.getType()
            int r7 = gnu.kawa.functions.Arithmetic.classifyType(r3)
            r0 = r24
            int r3 = r0.f55op
            int r14 = getReturnKind(r6, r7, r3)
            gnu.bytecode.Type r21 = gnu.kawa.functions.Arithmetic.kindType(r14)
            if (r14 == 0) goto L_0x004d
            r3 = 2
            if (r15 == r3) goto L_0x0051
        L_0x004d:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0051:
            gnu.bytecode.Type r19 = r27.getType()
            int r20 = gnu.kawa.functions.Arithmetic.classifyType(r19)
            r3 = 1
            r0 = r20
            if (r0 == r3) goto L_0x0063
            r3 = 2
            r0 = r20
            if (r0 != r3) goto L_0x00eb
        L_0x0063:
            r3 = 1
            if (r14 < r3) goto L_0x00eb
            r3 = 4
            if (r14 > r3) goto L_0x00eb
            r14 = r20
            r3 = 1
            r0 = r20
            if (r0 != r3) goto L_0x00e8
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.intType
        L_0x0072:
            r0 = r24
            int r3 = r0.f55op
            r4 = 4
            if (r3 < r4) goto L_0x0096
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 > r4) goto L_0x0096
            r0 = r24
            gnu.mapping.Procedure r12 = r0.proc
            gnu.kawa.functions.DivideOp r12 = (gnu.kawa.functions.DivideOp) r12
            int r3 = r12.f54op
            r4 = 4
            if (r3 != r4) goto L_0x0124
            r3 = 4
            if (r14 <= r3) goto L_0x0096
            r3 = 6
            if (r14 >= r3) goto L_0x0096
            r3 = 9
            if (r14 > r3) goto L_0x0124
        L_0x0096:
            r0 = r24
            int r3 = r0.f55op
            r4 = 4
            if (r3 != r4) goto L_0x0181
            r3 = 10
            if (r14 > r3) goto L_0x0181
            r3 = 8
            if (r14 == r3) goto L_0x0181
            r3 = 7
            if (r14 == r3) goto L_0x0181
            r3 = 6
            if (r14 == r3) goto L_0x00ae
            r3 = 4
            if (r14 <= r3) goto L_0x0174
        L_0x00ae:
            r3 = 6
            if (r14 != r3) goto L_0x0170
            gnu.kawa.lispexpr.LangObjType r11 = gnu.kawa.functions.Arithmetic.typeRatNum
        L_0x00b3:
            r23 = r11
            java.lang.String r3 = "divide"
            r4 = 2
            gnu.bytecode.Method r17 = r11.getDeclaredMethod(r3, r4)
        L_0x00bc:
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r23)
            r3 = 0
            r3 = r9[r3]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            r3 = 1
            r3 = r9[r3]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            gnu.bytecode.CodeAttr r3 = r26.getCode()
            r0 = r17
            r3.emitInvokeStatic(r0)
        L_0x00dd:
            r0 = r27
            r1 = r26
            r2 = r23
            r0.compileFromStack(r1, r2)
            goto L_0x0018
        L_0x00e8:
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.longType
            goto L_0x0072
        L_0x00eb:
            r3 = 8
            r0 = r20
            if (r0 == r3) goto L_0x00f6
            r3 = 7
            r0 = r20
            if (r0 != r3) goto L_0x010b
        L_0x00f6:
            r3 = 2
            if (r14 <= r3) goto L_0x010b
            r3 = 10
            if (r14 > r3) goto L_0x010b
            r14 = r20
            r3 = 7
            r0 = r20
            if (r0 != r3) goto L_0x0108
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.floatType
        L_0x0106:
            goto L_0x0072
        L_0x0108:
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.doubleType
            goto L_0x0106
        L_0x010b:
            r3 = 7
            if (r14 != r3) goto L_0x0112
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.floatType
            goto L_0x0072
        L_0x0112:
            r3 = 8
            if (r14 == r3) goto L_0x011a
            r3 = 9
            if (r14 != r3) goto L_0x0120
        L_0x011a:
            r14 = 8
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.doubleType
            goto L_0x0072
        L_0x0120:
            r23 = r21
            goto L_0x0072
        L_0x0124:
            int r3 = r12.f54op
            r4 = 5
            if (r3 != r4) goto L_0x0130
            r3 = 10
            if (r14 > r3) goto L_0x0130
            r3 = 7
            if (r14 != r3) goto L_0x0139
        L_0x0130:
            int r3 = r12.f54op
            r4 = 4
            if (r3 != r4) goto L_0x013d
            r3 = 10
            if (r14 != r3) goto L_0x013d
        L_0x0139:
            r14 = 8
            goto L_0x0096
        L_0x013d:
            int r3 = r12.f54op
            r4 = 7
            if (r3 == r4) goto L_0x014a
            int r3 = r12.f54op
            r4 = 6
            if (r3 != r4) goto L_0x015b
            r3 = 4
            if (r14 > r3) goto L_0x015b
        L_0x014a:
            int r3 = r12.getRoundingMode()
            r4 = 3
            if (r3 == r4) goto L_0x0096
            r3 = 4
            if (r14 == r3) goto L_0x0096
            r3 = 7
            if (r14 == r3) goto L_0x0096
            r3 = 8
            if (r14 == r3) goto L_0x0096
        L_0x015b:
            int r3 = r12.f54op
            r4 = 8
            if (r3 != r4) goto L_0x016b
            int r3 = r12.getRoundingMode()
            r4 = 3
            if (r3 == r4) goto L_0x0096
            r3 = 4
            if (r14 == r3) goto L_0x0096
        L_0x016b:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0170:
            gnu.kawa.lispexpr.LangObjType r11 = gnu.kawa.functions.Arithmetic.typeRealNum
            goto L_0x00b3
        L_0x0174:
            gnu.kawa.lispexpr.LangObjType r23 = gnu.kawa.functions.Arithmetic.typeIntNum
            gnu.kawa.lispexpr.LangObjType r3 = gnu.kawa.functions.Arithmetic.typeRatNum
            java.lang.String r4 = "make"
            r5 = 2
            gnu.bytecode.Method r17 = r3.getDeclaredMethod(r4, r5)
            goto L_0x00bc
        L_0x0181:
            r3 = 4
            if (r14 != r3) goto L_0x01df
            r0 = r24
            int r3 = r0.f55op
            r4 = 1
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 3
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 2
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 13
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 14
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 15
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 7
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 < r4) goto L_0x01df
            r0 = r24
            int r3 = r0.f55op
            r4 = 11
            if (r3 > r4) goto L_0x01df
        L_0x01d0:
            r3 = 0
            r4 = r9[r3]
            r3 = 1
            r5 = r9[r3]
            r3 = r24
            r8 = r26
            r3.compileIntNum(r4, r5, r6, r7, r8)
            goto L_0x00dd
        L_0x01df:
            r3 = 1
            if (r14 == r3) goto L_0x01fc
            r3 = 2
            if (r14 == r3) goto L_0x01fc
            r3 = 7
            if (r14 == r3) goto L_0x01ec
            r3 = 8
            if (r14 != r3) goto L_0x0269
        L_0x01ec:
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 <= r4) goto L_0x01fc
            r0 = r24
            int r3 = r0.f55op
            r4 = 13
            if (r3 < r4) goto L_0x0269
        L_0x01fc:
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r23)
            gnu.bytecode.CodeAttr r10 = r26.getCode()
            r13 = 0
        L_0x0205:
            if (r13 >= r15) goto L_0x00dd
            r3 = 1
            if (r13 != r3) goto L_0x0220
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 < r4) goto L_0x0220
            r0 = r24
            int r3 = r0.f55op
            r4 = 12
            if (r3 > r4) goto L_0x0220
            gnu.bytecode.PrimType r3 = gnu.bytecode.Type.intType
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r3)
        L_0x0220:
            r3 = r9[r13]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            if (r13 != 0) goto L_0x022e
        L_0x022b:
            int r13 = r13 + 1
            goto L_0x0205
        L_0x022e:
            switch(r14) {
                case 1: goto L_0x0232;
                case 2: goto L_0x0232;
                case 3: goto L_0x0231;
                case 4: goto L_0x0231;
                case 5: goto L_0x0231;
                case 6: goto L_0x0231;
                case 7: goto L_0x0232;
                case 8: goto L_0x0232;
                default: goto L_0x0231;
            }
        L_0x0231:
            goto L_0x022b
        L_0x0232:
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 != r4) goto L_0x025b
            r3 = 2
            gnu.bytecode.Type[] r0 = new gnu.bytecode.Type[r3]
            r16 = r0
            r3 = 0
            r16[r3] = r23
            r3 = 1
            gnu.bytecode.PrimType r4 = gnu.bytecode.Type.intType
            r16[r3] = r4
            java.lang.String r3 = "gnu.math.IntNum"
            gnu.bytecode.ClassType r3 = gnu.bytecode.ClassType.make(r3)
            java.lang.String r4 = "shift"
            r0 = r16
            gnu.bytecode.Method r18 = r3.getDeclaredMethod(r4, r0)
            r0 = r18
            r10.emitInvokeStatic(r0)
            goto L_0x022b
        L_0x025b:
            int r4 = r24.primitiveOpcode()
            gnu.bytecode.Type r3 = r23.getImplementationType()
            gnu.bytecode.PrimType r3 = (gnu.bytecode.PrimType) r3
            r10.emitBinop(r4, r3)
            goto L_0x022b
        L_0x0269:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        */
        throw new UnsupportedOperationException("Method not decompiled: gnu.kawa.functions.CompileArith.compile(gnu.expr.ApplyExp, gnu.expr.Compilation, gnu.expr.Target):void");
    }
public void compile ( gnu . expr . ApplyExp r25 , gnu . expr . Compilation r26 , gnu . expr . Target r27 ) { /*
            r24 = this;
            gnu.expr.Expression[] r9 = r25.getArgs()
            int r15 = r9.length
            if (r15 != 0) goto L_0x0019
            r0 = r24
            gnu.mapping.Procedure r3 = r0.proc
            gnu.kawa.functions.ArithOp r3 = (gnu.kawa.functions.ArithOp) r3
            java.lang.Object r3 = r3.defaultResult()
            r0 = r26
            r1 = r27
            r0.compileConstant(r3, r1)
        L_0x0018:
            return
        L_0x0019:
            r3 = 1
            if (r15 == r3) goto L_0x0022
            r0 = r27
            boolean r3 = r0 instanceof gnu.expr.IgnoreTarget
            if (r3 == 0) goto L_0x0026
        L_0x0022:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0026:
            r3 = 0
            r3 = r9[r3]
            gnu.bytecode.Type r3 = r3.getType()
            int r6 = gnu.kawa.functions.Arithmetic.classifyType(r3)
            r3 = 1
            r3 = r9[r3]
            gnu.bytecode.Type r3 = r3.getType()
            int r7 = gnu.kawa.functions.Arithmetic.classifyType(r3)
            r0 = r24
            int r3 = r0.f55op
            int r14 = getReturnKind(r6, r7, r3)
            gnu.bytecode.Type r21 = gnu.kawa.functions.Arithmetic.kindType(r14)
            if (r14 == 0) goto L_0x004d
            r3 = 2
            if (r15 == r3) goto L_0x0051
        L_0x004d:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0051:
            gnu.bytecode.Type r19 = r27.getType()
            int r20 = gnu.kawa.functions.Arithmetic.classifyType(r19)
            r3 = 1
            r0 = r20
            if (r0 == r3) goto L_0x0063
            r3 = 2
            r0 = r20
            if (r0 != r3) goto L_0x00eb
        L_0x0063:
            r3 = 1
            if (r14 < r3) goto L_0x00eb
            r3 = 4
            if (r14 > r3) goto L_0x00eb
            r14 = r20
            r3 = 1
            r0 = r20
            if (r0 != r3) goto L_0x00e8
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.intType
        L_0x0072:
            r0 = r24
            int r3 = r0.f55op
            r4 = 4
            if (r3 < r4) goto L_0x0096
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 > r4) goto L_0x0096
            r0 = r24
            gnu.mapping.Procedure r12 = r0.proc
            gnu.kawa.functions.DivideOp r12 = (gnu.kawa.functions.DivideOp) r12
            int r3 = r12.f54op
            r4 = 4
            if (r3 != r4) goto L_0x0124
            r3 = 4
            if (r14 <= r3) goto L_0x0096
            r3 = 6
            if (r14 >= r3) goto L_0x0096
            r3 = 9
            if (r14 > r3) goto L_0x0124
        L_0x0096:
            r0 = r24
            int r3 = r0.f55op
            r4 = 4
            if (r3 != r4) goto L_0x0181
            r3 = 10
            if (r14 > r3) goto L_0x0181
            r3 = 8
            if (r14 == r3) goto L_0x0181
            r3 = 7
            if (r14 == r3) goto L_0x0181
            r3 = 6
            if (r14 == r3) goto L_0x00ae
            r3 = 4
            if (r14 <= r3) goto L_0x0174
        L_0x00ae:
            r3 = 6
            if (r14 != r3) goto L_0x0170
            gnu.kawa.lispexpr.LangObjType r11 = gnu.kawa.functions.Arithmetic.typeRatNum
        L_0x00b3:
            r23 = r11
            java.lang.String r3 = "divide"
            r4 = 2
            gnu.bytecode.Method r17 = r11.getDeclaredMethod(r3, r4)
        L_0x00bc:
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r23)
            r3 = 0
            r3 = r9[r3]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            r3 = 1
            r3 = r9[r3]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            gnu.bytecode.CodeAttr r3 = r26.getCode()
            r0 = r17
            r3.emitInvokeStatic(r0)
        L_0x00dd:
            r0 = r27
            r1 = r26
            r2 = r23
            r0.compileFromStack(r1, r2)
            goto L_0x0018
        L_0x00e8:
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.longType
            goto L_0x0072
        L_0x00eb:
            r3 = 8
            r0 = r20
            if (r0 == r3) goto L_0x00f6
            r3 = 7
            r0 = r20
            if (r0 != r3) goto L_0x010b
        L_0x00f6:
            r3 = 2
            if (r14 <= r3) goto L_0x010b
            r3 = 10
            if (r14 > r3) goto L_0x010b
            r14 = r20
            r3 = 7
            r0 = r20
            if (r0 != r3) goto L_0x0108
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.floatType
        L_0x0106:
            goto L_0x0072
        L_0x0108:
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.doubleType
            goto L_0x0106
        L_0x010b:
            r3 = 7
            if (r14 != r3) goto L_0x0112
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.floatType
            goto L_0x0072
        L_0x0112:
            r3 = 8
            if (r14 == r3) goto L_0x011a
            r3 = 9
            if (r14 != r3) goto L_0x0120
        L_0x011a:
            r14 = 8
            gnu.bytecode.PrimType r23 = gnu.kawa.lispexpr.LangPrimType.doubleType
            goto L_0x0072
        L_0x0120:
            r23 = r21
            goto L_0x0072
        L_0x0124:
            int r3 = r12.f54op
            r4 = 5
            if (r3 != r4) goto L_0x0130
            r3 = 10
            if (r14 > r3) goto L_0x0130
            r3 = 7
            if (r14 != r3) goto L_0x0139
        L_0x0130:
            int r3 = r12.f54op
            r4 = 4
            if (r3 != r4) goto L_0x013d
            r3 = 10
            if (r14 != r3) goto L_0x013d
        L_0x0139:
            r14 = 8
            goto L_0x0096
        L_0x013d:
            int r3 = r12.f54op
            r4 = 7
            if (r3 == r4) goto L_0x014a
            int r3 = r12.f54op
            r4 = 6
            if (r3 != r4) goto L_0x015b
            r3 = 4
            if (r14 > r3) goto L_0x015b
        L_0x014a:
            int r3 = r12.getRoundingMode()
            r4 = 3
            if (r3 == r4) goto L_0x0096
            r3 = 4
            if (r14 == r3) goto L_0x0096
            r3 = 7
            if (r14 == r3) goto L_0x0096
            r3 = 8
            if (r14 == r3) goto L_0x0096
        L_0x015b:
            int r3 = r12.f54op
            r4 = 8
            if (r3 != r4) goto L_0x016b
            int r3 = r12.getRoundingMode()
            r4 = 3
            if (r3 == r4) goto L_0x0096
            r3 = 4
            if (r14 == r3) goto L_0x0096
        L_0x016b:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        L_0x0170:
            gnu.kawa.lispexpr.LangObjType r11 = gnu.kawa.functions.Arithmetic.typeRealNum
            goto L_0x00b3
        L_0x0174:
            gnu.kawa.lispexpr.LangObjType r23 = gnu.kawa.functions.Arithmetic.typeIntNum
            gnu.kawa.lispexpr.LangObjType r3 = gnu.kawa.functions.Arithmetic.typeRatNum
            java.lang.String r4 = "make"
            r5 = 2
            gnu.bytecode.Method r17 = r3.getDeclaredMethod(r4, r5)
            goto L_0x00bc
        L_0x0181:
            r3 = 4
            if (r14 != r3) goto L_0x01df
            r0 = r24
            int r3 = r0.f55op
            r4 = 1
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 3
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 2
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 13
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 14
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 15
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 7
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 == r4) goto L_0x01d0
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 < r4) goto L_0x01df
            r0 = r24
            int r3 = r0.f55op
            r4 = 11
            if (r3 > r4) goto L_0x01df
        L_0x01d0:
            r3 = 0
            r4 = r9[r3]
            r3 = 1
            r5 = r9[r3]
            r3 = r24
            r8 = r26
            r3.compileIntNum(r4, r5, r6, r7, r8)
            goto L_0x00dd
        L_0x01df:
            r3 = 1
            if (r14 == r3) goto L_0x01fc
            r3 = 2
            if (r14 == r3) goto L_0x01fc
            r3 = 7
            if (r14 == r3) goto L_0x01ec
            r3 = 8
            if (r14 != r3) goto L_0x0269
        L_0x01ec:
            r0 = r24
            int r3 = r0.f55op
            r4 = 8
            if (r3 <= r4) goto L_0x01fc
            r0 = r24
            int r3 = r0.f55op
            r4 = 13
            if (r3 < r4) goto L_0x0269
        L_0x01fc:
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r23)
            gnu.bytecode.CodeAttr r10 = r26.getCode()
            r13 = 0
        L_0x0205:
            if (r13 >= r15) goto L_0x00dd
            r3 = 1
            if (r13 != r3) goto L_0x0220
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 < r4) goto L_0x0220
            r0 = r24
            int r3 = r0.f55op
            r4 = 12
            if (r3 > r4) goto L_0x0220
            gnu.bytecode.PrimType r3 = gnu.bytecode.Type.intType
            gnu.expr.Target r22 = gnu.expr.StackTarget.getInstance(r3)
        L_0x0220:
            r3 = r9[r13]
            r0 = r26
            r1 = r22
            r3.compile(r0, r1)
            if (r13 != 0) goto L_0x022e
        L_0x022b:
            int r13 = r13 + 1
            goto L_0x0205
        L_0x022e:
            switch(r14) {
                case 1: goto L_0x0232;
                case 2: goto L_0x0232;
                case 3: goto L_0x0231;
                case 4: goto L_0x0231;
                case 5: goto L_0x0231;
                case 6: goto L_0x0231;
                case 7: goto L_0x0232;
                case 8: goto L_0x0232;
                default: goto L_0x0231;
            }
        L_0x0231:
            goto L_0x022b
        L_0x0232:
            r0 = r24
            int r3 = r0.f55op
            r4 = 9
            if (r3 != r4) goto L_0x025b
            r3 = 2
            gnu.bytecode.Type[] r0 = new gnu.bytecode.Type[r3]
            r16 = r0
            r3 = 0
            r16[r3] = r23
            r3 = 1
            gnu.bytecode.PrimType r4 = gnu.bytecode.Type.intType
            r16[r3] = r4
            java.lang.String r3 = "gnu.math.IntNum"
            gnu.bytecode.ClassType r3 = gnu.bytecode.ClassType.make(r3)
            java.lang.String r4 = "shift"
            r0 = r16
            gnu.bytecode.Method r18 = r3.getDeclaredMethod(r4, r0)
            r0 = r18
            r10.emitInvokeStatic(r0)
            goto L_0x022b
        L_0x025b:
            int r4 = r24.primitiveOpcode()
            gnu.bytecode.Type r3 = r23.getImplementationType()
            gnu.bytecode.PrimType r3 = (gnu.bytecode.PrimType) r3
            r10.emitBinop(r4, r3)
            goto L_0x022b
        L_0x0269:
            gnu.expr.ApplyExp.compile(r25, r26, r27)
            goto L_0x0018
        */ throw new UnsupportedOperationException ( "Method not decompiled: gnu.kawa.functions.CompileArith.compile(gnu.expr.ApplyExp, gnu.expr.Compilation, gnu.expr.Target):void" ) ; }
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .