Source/sources/gnu/expr/Declaration.java
public void load(gnu.expr.AccessExp r36, int r37, gnu.expr.Compilation r38, gnu.expr.Target r39) {
        /*
            r35 = this;
            r0 = r39
            boolean r0 = r0 instanceof gnu.expr.IgnoreTarget
            r32 = r0
            if (r32 == 0) goto L_0x0009
        L_0x0008:
            return
        L_0x0009:
            if (r36 != 0) goto L_0x0051
            r23 = 0
        L_0x000d:
            boolean r32 = r35.isAlias()
            if (r32 == 0) goto L_0x0056
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ReferenceExp
            r32 = r0
            if (r32 == 0) goto L_0x0056
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r25 = r0
            gnu.expr.ReferenceExp r25 = (gnu.expr.ReferenceExp) r25
            r0 = r25
            gnu.expr.Declaration r0 = r0.binding
            r22 = r0
            if (r22 == 0) goto L_0x0056
            r32 = r37 & 2
            if (r32 == 0) goto L_0x003b
            boolean r32 = r22.isIndirectBinding()
            if (r32 == 0) goto L_0x0056
        L_0x003b:
            if (r23 == 0) goto L_0x0043
            boolean r32 = r22.needsContext()
            if (r32 != 0) goto L_0x0056
        L_0x0043:
            r0 = r22
            r1 = r25
            r2 = r37
            r3 = r38
            r4 = r39
            r0.load(r1, r2, r3, r4)
            goto L_0x0008
        L_0x0051:
            gnu.expr.Declaration r23 = r36.contextDecl()
            goto L_0x000d
        L_0x0056:
            boolean r32 = r35.isFluid()
            if (r32 == 0) goto L_0x007e
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.context
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.FluidLetExp
            r32 = r0
            if (r32 == 0) goto L_0x007e
            r0 = r35
            gnu.expr.Declaration r0 = r0.base
            r32 = r0
            r0 = r32
            r1 = r36
            r2 = r37
            r3 = r38
            r4 = r39
            r0.load(r1, r2, r3, r4)
            goto L_0x0008
        L_0x007e:
            gnu.bytecode.CodeAttr r7 = r38.getCode()
            gnu.bytecode.Type r26 = r35.getType()
            boolean r32 = r35.isIndirectBinding()
            if (r32 != 0) goto L_0x0145
            r32 = r37 & 2
            if (r32 == 0) goto L_0x0145
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            if (r32 != 0) goto L_0x00b5
            java.lang.Error r32 = new java.lang.Error
            java.lang.StringBuilder r33 = new java.lang.StringBuilder
            r33.<init>()
            java.lang.String r34 = "internal error: cannot take location of "
            java.lang.StringBuilder r33 = r33.append(r34)
            r0 = r33
            r1 = r35
            java.lang.StringBuilder r33 = r0.append(r1)
            java.lang.String r33 = r33.toString()
            r32.<init>(r33)
            throw r32
        L_0x00b5:
            r0 = r38
            boolean r0 = r0.immediate
            r16 = r0
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            boolean r32 = r32.getStaticFlag()
            if (r32 == 0) goto L_0x00fb
            java.lang.String r32 = "gnu.kawa.reflect.StaticFieldLocation"
            gnu.bytecode.ClassType r20 = gnu.bytecode.ClassType.make(r32)
            java.lang.String r33 = "make"
            if (r16 == 0) goto L_0x00f8
            r32 = 1
        L_0x00d3:
            r0 = r20
            r1 = r33
            r2 = r32
            gnu.bytecode.Method r21 = r0.getDeclaredMethod(r1, r2)
        L_0x00dd:
            if (r16 == 0) goto L_0x011e
            r0 = r38
            r1 = r35
            r0.compileConstant(r1)
        L_0x00e6:
            r0 = r21
            r7.emitInvokeStatic(r0)
            r26 = r20
        L_0x00ed:
            r0 = r39
            r1 = r38
            r2 = r26
            r0.compileFromStack(r1, r2)
            goto L_0x0008
        L_0x00f8:
            r32 = 2
            goto L_0x00d3
        L_0x00fb:
            java.lang.String r32 = "gnu.kawa.reflect.FieldLocation"
            gnu.bytecode.ClassType r20 = gnu.bytecode.ClassType.make(r32)
            java.lang.String r33 = "make"
            if (r16 == 0) goto L_0x011b
            r32 = 2
        L_0x0107:
            r0 = r20
            r1 = r33
            r2 = r32
            gnu.bytecode.Method r21 = r0.getDeclaredMethod(r1, r2)
            r0 = r35
            r1 = r23
            r2 = r38
            r0.loadOwningObject(r1, r2)
            goto L_0x00dd
        L_0x011b:
            r32 = 3
            goto L_0x0107
        L_0x011e:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.ClassType r32 = r32.getDeclaringClass()
            java.lang.String r32 = r32.getName()
            r0 = r38
            r1 = r32
            r0.compileConstant(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            java.lang.String r32 = r32.getName()
            r0 = r38
            r1 = r32
            r0.compileConstant(r1)
            goto L_0x00e6
        L_0x0145:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            if (r32 == 0) goto L_0x0227
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.ClassType r32 = r32.getDeclaringClass()
            r0 = r38
            r1 = r32
            r0.usedClass(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.Type r32 = r32.getType()
            r0 = r38
            r1 = r32
            r0.usedClass(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            boolean r32 = r32.getStaticFlag()
            if (r32 != 0) goto L_0x021a
            r0 = r35
            r1 = r23
            r2 = r38
            r0.loadOwningObject(r1, r2)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            r0 = r32
            r7.emitGetField(r0)
        L_0x018f:
            boolean r32 = r35.isIndirectBinding()
            if (r32 == 0) goto L_0x00ed
            r32 = r37 & 2
            if (r32 != 0) goto L_0x00ed
            if (r36 == 0) goto L_0x035e
            java.lang.String r12 = r36.getFileName()
            if (r12 == 0) goto L_0x035e
            int r18 = r36.getLineNumber()
            if (r18 <= 0) goto L_0x035e
            java.lang.String r32 = "gnu.mapping.UnboundLocationException"
            gnu.bytecode.ClassType r29 = gnu.bytecode.ClassType.make(r32)
            boolean r17 = r7.isInTry()
            int r8 = r36.getColumnNumber()
            gnu.bytecode.Label r27 = new gnu.bytecode.Label
            r0 = r27
            r0.<init>(r7)
            r0 = r27
            r0.define(r7)
            gnu.bytecode.Method r32 = gnu.expr.Compilation.getLocationMethod
            r0 = r32
            r7.emitInvokeVirtual(r0)
            gnu.bytecode.Label r10 = new gnu.bytecode.Label
            r10.<init>(r7)
            r10.define(r7)
            gnu.bytecode.Label r9 = new gnu.bytecode.Label
            r9.<init>(r7)
            r9.setTypes(r7)
            if (r17 == 0) goto L_0x0354
            r7.emitGoto(r9)
        L_0x01dd:
            r13 = 0
            if (r17 != 0) goto L_0x01e4
            int r13 = r7.beginFragment(r9)
        L_0x01e4:
            r0 = r27
            r1 = r29
            r7.addHandler(r0, r10, r1)
            r0 = r29
            r7.emitDup(r0)
            r7.emitPushString(r12)
            r0 = r18
            r7.emitPushInt(r0)
            r7.emitPushInt(r8)
            java.lang.String r32 = "setLine"
            r33 = 3
            r0 = r29
            r1 = r32
            r2 = r33
            gnu.bytecode.Method r32 = r0.getDeclaredMethod(r1, r2)
            r0 = r32
            r7.emitInvokeVirtual(r0)
            r7.emitThrow()
            if (r17 == 0) goto L_0x0359
            r9.define(r7)
        L_0x0216:
            gnu.bytecode.ClassType r26 = gnu.bytecode.Type.pointer_type
            goto L_0x00ed
        L_0x021a:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            r0 = r32
            r7.emitGetStatic(r0)
            goto L_0x018f
        L_0x0227:
            boolean r32 = r35.isIndirectBinding()
            if (r32 == 0) goto L_0x0295
            r0 = r38
            boolean r0 = r0.immediate
            r32 = r0
            if (r32 == 0) goto L_0x0295
            gnu.bytecode.Variable r32 = r35.getVariable()
            if (r32 != 0) goto L_0x0295
            gnu.mapping.Environment r11 = gnu.mapping.Environment.getCurrent()
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r32 = r0
            if (r32 == 0) goto L_0x0284
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            gnu.mapping.Symbol r32 = (gnu.mapping.Symbol) r32
            r28 = r32
        L_0x0257:
            r24 = 0
            boolean r32 = r35.isProcedureDecl()
            if (r32 == 0) goto L_0x026b
            gnu.expr.Language r32 = r38.getLanguage()
            boolean r32 = r32.hasSeparateFunctionNamespace()
            if (r32 == 0) goto L_0x026b
            java.lang.Object r24 = gnu.mapping.EnvironmentKey.FUNCTION
        L_0x026b:
            r0 = r28
            r1 = r24
            gnu.mapping.Location r19 = r11.getLocation(r0, r1)
            gnu.bytecode.ClassType r32 = gnu.expr.Compilation.typeLocation
            gnu.expr.Target r32 = gnu.expr.Target.pushValue(r32)
            r0 = r38
            r1 = r19
            r2 = r32
            r0.compileConstant(r1, r2)
            goto L_0x018f
        L_0x0284:
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            java.lang.String r32 = r32.toString()
            r0 = r32
            gnu.mapping.Symbol r28 = r11.getSymbol(r0)
            goto L_0x0257
        L_0x0295:
            r0 = r38
            boolean r0 = r0.immediate
            r32 = r0
            if (r32 == 0) goto L_0x02ae
            java.lang.Object r30 = r35.getConstantValue()
            if (r30 == 0) goto L_0x02ae
            r0 = r38
            r1 = r30
            r2 = r39
            r0.compileConstant(r1, r2)
            goto L_0x0008
        L_0x02ae:
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            gnu.expr.QuoteExp r33 = gnu.expr.QuoteExp.undefined_exp
            r0 = r32
            r1 = r33
            if (r0 == r1) goto L_0x02f7
            boolean r32 = r35.ignorable()
            if (r32 == 0) goto L_0x02f7
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.LambdaExp
            r32 = r0
            if (r32 == 0) goto L_0x02e6
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            gnu.expr.LambdaExp r32 = (gnu.expr.LambdaExp) r32
            r0 = r32
            gnu.expr.ScopeExp r0 = r0.outer
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ModuleExp
            r32 = r0
            if (r32 != 0) goto L_0x02f7
        L_0x02e6:
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            r1 = r38
            r2 = r39
            r0.compile(r1, r2)
            goto L_0x0008
        L_0x02f7:
            gnu.bytecode.Variable r31 = r35.getVariable()
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.context
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ClassExp
            r32 = r0
            if (r32 == 0) goto L_0x0345
            if (r31 != 0) goto L_0x0345
            r32 = 128(0x80, double:6.32E-322)
            r0 = r35
            r1 = r32
            boolean r32 = r0.getFlag(r1)
            if (r32 != 0) goto L_0x0345
            r0 = r35
            gnu.expr.ScopeExp r6 = r0.context
            gnu.expr.ClassExp r6 = (gnu.expr.ClassExp) r6
            boolean r32 = r6.isMakingClassPair()
            if (r32 == 0) goto L_0x0345
            java.lang.String r32 = "get"
            java.lang.String r33 = r35.getName()
            java.lang.String r14 = gnu.expr.ClassExp.slotToMethodName(r32, r33)
            gnu.bytecode.ClassType r0 = r6.type
            r32 = r0
            r33 = 0
            r0 = r32
            r1 = r33
            gnu.bytecode.Method r15 = r0.getDeclaredMethod(r14, r1)
            r0 = r38
            r6.loadHeapFrame(r0)
            r7.emitInvoke(r15)
            goto L_0x018f
        L_0x0345:
            if (r31 != 0) goto L_0x034d
            r0 = r35
            gnu.bytecode.Variable r31 = r0.allocateVariable(r7)
        L_0x034d:
            r0 = r31
            r7.emitLoad(r0)
            goto L_0x018f
        L_0x0354:
            r7.setUnreachable()
            goto L_0x01dd
        L_0x0359:
            r7.endFragment(r13)
            goto L_0x0216
        L_0x035e:
            gnu.bytecode.Method r32 = gnu.expr.Compilation.getLocationMethod
            r0 = r32
            r7.emitInvokeVirtual(r0)
            goto L_0x0216
        */
        throw new UnsupportedOperationException("Method not decompiled: gnu.expr.Declaration.load(gnu.expr.AccessExp, int, 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 load(gnu.expr.AccessExp r36, int r37, gnu.expr.Compilation r38, gnu.expr.Target r39) {
        /*
            r35 = this;
            r0 = r39
            boolean r0 = r0 instanceof gnu.expr.IgnoreTarget
            r32 = r0
            if (r32 == 0) goto L_0x0009
        L_0x0008:
            return
        L_0x0009:
            if (r36 != 0) goto L_0x0051
            r23 = 0
        L_0x000d:
            boolean r32 = r35.isAlias()
            if (r32 == 0) goto L_0x0056
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ReferenceExp
            r32 = r0
            if (r32 == 0) goto L_0x0056
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r25 = r0
            gnu.expr.ReferenceExp r25 = (gnu.expr.ReferenceExp) r25
            r0 = r25
            gnu.expr.Declaration r0 = r0.binding
            r22 = r0
            if (r22 == 0) goto L_0x0056
            r32 = r37 & 2
            if (r32 == 0) goto L_0x003b
            boolean r32 = r22.isIndirectBinding()
            if (r32 == 0) goto L_0x0056
        L_0x003b:
            if (r23 == 0) goto L_0x0043
            boolean r32 = r22.needsContext()
            if (r32 != 0) goto L_0x0056
        L_0x0043:
            r0 = r22
            r1 = r25
            r2 = r37
            r3 = r38
            r4 = r39
            r0.load(r1, r2, r3, r4)
            goto L_0x0008
        L_0x0051:
            gnu.expr.Declaration r23 = r36.contextDecl()
            goto L_0x000d
        L_0x0056:
            boolean r32 = r35.isFluid()
            if (r32 == 0) goto L_0x007e
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.context
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.FluidLetExp
            r32 = r0
            if (r32 == 0) goto L_0x007e
            r0 = r35
            gnu.expr.Declaration r0 = r0.base
            r32 = r0
            r0 = r32
            r1 = r36
            r2 = r37
            r3 = r38
            r4 = r39
            r0.load(r1, r2, r3, r4)
            goto L_0x0008
        L_0x007e:
            gnu.bytecode.CodeAttr r7 = r38.getCode()
            gnu.bytecode.Type r26 = r35.getType()
            boolean r32 = r35.isIndirectBinding()
            if (r32 != 0) goto L_0x0145
            r32 = r37 & 2
            if (r32 == 0) goto L_0x0145
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            if (r32 != 0) goto L_0x00b5
            java.lang.Error r32 = new java.lang.Error
            java.lang.StringBuilder r33 = new java.lang.StringBuilder
            r33.<init>()
            java.lang.String r34 = "internal error: cannot take location of "
            java.lang.StringBuilder r33 = r33.append(r34)
            r0 = r33
            r1 = r35
            java.lang.StringBuilder r33 = r0.append(r1)
            java.lang.String r33 = r33.toString()
            r32.<init>(r33)
            throw r32
        L_0x00b5:
            r0 = r38
            boolean r0 = r0.immediate
            r16 = r0
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            boolean r32 = r32.getStaticFlag()
            if (r32 == 0) goto L_0x00fb
            java.lang.String r32 = "gnu.kawa.reflect.StaticFieldLocation"
            gnu.bytecode.ClassType r20 = gnu.bytecode.ClassType.make(r32)
            java.lang.String r33 = "make"
            if (r16 == 0) goto L_0x00f8
            r32 = 1
        L_0x00d3:
            r0 = r20
            r1 = r33
            r2 = r32
            gnu.bytecode.Method r21 = r0.getDeclaredMethod(r1, r2)
        L_0x00dd:
            if (r16 == 0) goto L_0x011e
            r0 = r38
            r1 = r35
            r0.compileConstant(r1)
        L_0x00e6:
            r0 = r21
            r7.emitInvokeStatic(r0)
            r26 = r20
        L_0x00ed:
            r0 = r39
            r1 = r38
            r2 = r26
            r0.compileFromStack(r1, r2)
            goto L_0x0008
        L_0x00f8:
            r32 = 2
            goto L_0x00d3
        L_0x00fb:
            java.lang.String r32 = "gnu.kawa.reflect.FieldLocation"
            gnu.bytecode.ClassType r20 = gnu.bytecode.ClassType.make(r32)
            java.lang.String r33 = "make"
            if (r16 == 0) goto L_0x011b
            r32 = 2
        L_0x0107:
            r0 = r20
            r1 = r33
            r2 = r32
            gnu.bytecode.Method r21 = r0.getDeclaredMethod(r1, r2)
            r0 = r35
            r1 = r23
            r2 = r38
            r0.loadOwningObject(r1, r2)
            goto L_0x00dd
        L_0x011b:
            r32 = 3
            goto L_0x0107
        L_0x011e:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.ClassType r32 = r32.getDeclaringClass()
            java.lang.String r32 = r32.getName()
            r0 = r38
            r1 = r32
            r0.compileConstant(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            java.lang.String r32 = r32.getName()
            r0 = r38
            r1 = r32
            r0.compileConstant(r1)
            goto L_0x00e6
        L_0x0145:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            if (r32 == 0) goto L_0x0227
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.ClassType r32 = r32.getDeclaringClass()
            r0 = r38
            r1 = r32
            r0.usedClass(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.Type r32 = r32.getType()
            r0 = r38
            r1 = r32
            r0.usedClass(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            boolean r32 = r32.getStaticFlag()
            if (r32 != 0) goto L_0x021a
            r0 = r35
            r1 = r23
            r2 = r38
            r0.loadOwningObject(r1, r2)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            r0 = r32
            r7.emitGetField(r0)
        L_0x018f:
            boolean r32 = r35.isIndirectBinding()
            if (r32 == 0) goto L_0x00ed
            r32 = r37 & 2
            if (r32 != 0) goto L_0x00ed
            if (r36 == 0) goto L_0x035e
            java.lang.String r12 = r36.getFileName()
            if (r12 == 0) goto L_0x035e
            int r18 = r36.getLineNumber()
            if (r18 <= 0) goto L_0x035e
            java.lang.String r32 = "gnu.mapping.UnboundLocationException"
            gnu.bytecode.ClassType r29 = gnu.bytecode.ClassType.make(r32)
            boolean r17 = r7.isInTry()
            int r8 = r36.getColumnNumber()
            gnu.bytecode.Label r27 = new gnu.bytecode.Label
            r0 = r27
            r0.<init>(r7)
            r0 = r27
            r0.define(r7)
            gnu.bytecode.Method r32 = gnu.expr.Compilation.getLocationMethod
            r0 = r32
            r7.emitInvokeVirtual(r0)
            gnu.bytecode.Label r10 = new gnu.bytecode.Label
            r10.<init>(r7)
            r10.define(r7)
            gnu.bytecode.Label r9 = new gnu.bytecode.Label
            r9.<init>(r7)
            r9.setTypes(r7)
            if (r17 == 0) goto L_0x0354
            r7.emitGoto(r9)
        L_0x01dd:
            r13 = 0
            if (r17 != 0) goto L_0x01e4
            int r13 = r7.beginFragment(r9)
        L_0x01e4:
            r0 = r27
            r1 = r29
            r7.addHandler(r0, r10, r1)
            r0 = r29
            r7.emitDup(r0)
            r7.emitPushString(r12)
            r0 = r18
            r7.emitPushInt(r0)
            r7.emitPushInt(r8)
            java.lang.String r32 = "setLine"
            r33 = 3
            r0 = r29
            r1 = r32
            r2 = r33
            gnu.bytecode.Method r32 = r0.getDeclaredMethod(r1, r2)
            r0 = r32
            r7.emitInvokeVirtual(r0)
            r7.emitThrow()
            if (r17 == 0) goto L_0x0359
            r9.define(r7)
        L_0x0216:
            gnu.bytecode.ClassType r26 = gnu.bytecode.Type.pointer_type
            goto L_0x00ed
        L_0x021a:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            r0 = r32
            r7.emitGetStatic(r0)
            goto L_0x018f
        L_0x0227:
            boolean r32 = r35.isIndirectBinding()
            if (r32 == 0) goto L_0x0295
            r0 = r38
            boolean r0 = r0.immediate
            r32 = r0
            if (r32 == 0) goto L_0x0295
            gnu.bytecode.Variable r32 = r35.getVariable()
            if (r32 != 0) goto L_0x0295
            gnu.mapping.Environment r11 = gnu.mapping.Environment.getCurrent()
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r32 = r0
            if (r32 == 0) goto L_0x0284
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            gnu.mapping.Symbol r32 = (gnu.mapping.Symbol) r32
            r28 = r32
        L_0x0257:
            r24 = 0
            boolean r32 = r35.isProcedureDecl()
            if (r32 == 0) goto L_0x026b
            gnu.expr.Language r32 = r38.getLanguage()
            boolean r32 = r32.hasSeparateFunctionNamespace()
            if (r32 == 0) goto L_0x026b
            java.lang.Object r24 = gnu.mapping.EnvironmentKey.FUNCTION
        L_0x026b:
            r0 = r28
            r1 = r24
            gnu.mapping.Location r19 = r11.getLocation(r0, r1)
            gnu.bytecode.ClassType r32 = gnu.expr.Compilation.typeLocation
            gnu.expr.Target r32 = gnu.expr.Target.pushValue(r32)
            r0 = r38
            r1 = r19
            r2 = r32
            r0.compileConstant(r1, r2)
            goto L_0x018f
        L_0x0284:
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            java.lang.String r32 = r32.toString()
            r0 = r32
            gnu.mapping.Symbol r28 = r11.getSymbol(r0)
            goto L_0x0257
        L_0x0295:
            r0 = r38
            boolean r0 = r0.immediate
            r32 = r0
            if (r32 == 0) goto L_0x02ae
            java.lang.Object r30 = r35.getConstantValue()
            if (r30 == 0) goto L_0x02ae
            r0 = r38
            r1 = r30
            r2 = r39
            r0.compileConstant(r1, r2)
            goto L_0x0008
        L_0x02ae:
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            gnu.expr.QuoteExp r33 = gnu.expr.QuoteExp.undefined_exp
            r0 = r32
            r1 = r33
            if (r0 == r1) goto L_0x02f7
            boolean r32 = r35.ignorable()
            if (r32 == 0) goto L_0x02f7
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.LambdaExp
            r32 = r0
            if (r32 == 0) goto L_0x02e6
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            gnu.expr.LambdaExp r32 = (gnu.expr.LambdaExp) r32
            r0 = r32
            gnu.expr.ScopeExp r0 = r0.outer
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ModuleExp
            r32 = r0
            if (r32 != 0) goto L_0x02f7
        L_0x02e6:
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            r1 = r38
            r2 = r39
            r0.compile(r1, r2)
            goto L_0x0008
        L_0x02f7:
            gnu.bytecode.Variable r31 = r35.getVariable()
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.context
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ClassExp
            r32 = r0
            if (r32 == 0) goto L_0x0345
            if (r31 != 0) goto L_0x0345
            r32 = 128(0x80, double:6.32E-322)
            r0 = r35
            r1 = r32
            boolean r32 = r0.getFlag(r1)
            if (r32 != 0) goto L_0x0345
            r0 = r35
            gnu.expr.ScopeExp r6 = r0.context
            gnu.expr.ClassExp r6 = (gnu.expr.ClassExp) r6
            boolean r32 = r6.isMakingClassPair()
            if (r32 == 0) goto L_0x0345
            java.lang.String r32 = "get"
            java.lang.String r33 = r35.getName()
            java.lang.String r14 = gnu.expr.ClassExp.slotToMethodName(r32, r33)
            gnu.bytecode.ClassType r0 = r6.type
            r32 = r0
            r33 = 0
            r0 = r32
            r1 = r33
            gnu.bytecode.Method r15 = r0.getDeclaredMethod(r14, r1)
            r0 = r38
            r6.loadHeapFrame(r0)
            r7.emitInvoke(r15)
            goto L_0x018f
        L_0x0345:
            if (r31 != 0) goto L_0x034d
            r0 = r35
            gnu.bytecode.Variable r31 = r0.allocateVariable(r7)
        L_0x034d:
            r0 = r31
            r7.emitLoad(r0)
            goto L_0x018f
        L_0x0354:
            r7.setUnreachable()
            goto L_0x01dd
        L_0x0359:
            r7.endFragment(r13)
            goto L_0x0216
        L_0x035e:
            gnu.bytecode.Method r32 = gnu.expr.Compilation.getLocationMethod
            r0 = r32
            r7.emitInvokeVirtual(r0)
            goto L_0x0216
        */
        throw new UnsupportedOperationException("Method not decompiled: gnu.expr.Declaration.load(gnu.expr.AccessExp, int, gnu.expr.Compilation, gnu.expr.Target):void");
    }
public void load ( gnu . expr . AccessExp r36 , int r37 , gnu . expr . Compilation r38 , gnu . expr . Target r39 ) { /*
            r35 = this;
            r0 = r39
            boolean r0 = r0 instanceof gnu.expr.IgnoreTarget
            r32 = r0
            if (r32 == 0) goto L_0x0009
        L_0x0008:
            return
        L_0x0009:
            if (r36 != 0) goto L_0x0051
            r23 = 0
        L_0x000d:
            boolean r32 = r35.isAlias()
            if (r32 == 0) goto L_0x0056
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ReferenceExp
            r32 = r0
            if (r32 == 0) goto L_0x0056
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r25 = r0
            gnu.expr.ReferenceExp r25 = (gnu.expr.ReferenceExp) r25
            r0 = r25
            gnu.expr.Declaration r0 = r0.binding
            r22 = r0
            if (r22 == 0) goto L_0x0056
            r32 = r37 & 2
            if (r32 == 0) goto L_0x003b
            boolean r32 = r22.isIndirectBinding()
            if (r32 == 0) goto L_0x0056
        L_0x003b:
            if (r23 == 0) goto L_0x0043
            boolean r32 = r22.needsContext()
            if (r32 != 0) goto L_0x0056
        L_0x0043:
            r0 = r22
            r1 = r25
            r2 = r37
            r3 = r38
            r4 = r39
            r0.load(r1, r2, r3, r4)
            goto L_0x0008
        L_0x0051:
            gnu.expr.Declaration r23 = r36.contextDecl()
            goto L_0x000d
        L_0x0056:
            boolean r32 = r35.isFluid()
            if (r32 == 0) goto L_0x007e
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.context
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.FluidLetExp
            r32 = r0
            if (r32 == 0) goto L_0x007e
            r0 = r35
            gnu.expr.Declaration r0 = r0.base
            r32 = r0
            r0 = r32
            r1 = r36
            r2 = r37
            r3 = r38
            r4 = r39
            r0.load(r1, r2, r3, r4)
            goto L_0x0008
        L_0x007e:
            gnu.bytecode.CodeAttr r7 = r38.getCode()
            gnu.bytecode.Type r26 = r35.getType()
            boolean r32 = r35.isIndirectBinding()
            if (r32 != 0) goto L_0x0145
            r32 = r37 & 2
            if (r32 == 0) goto L_0x0145
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            if (r32 != 0) goto L_0x00b5
            java.lang.Error r32 = new java.lang.Error
            java.lang.StringBuilder r33 = new java.lang.StringBuilder
            r33.<init>()
            java.lang.String r34 = "internal error: cannot take location of "
            java.lang.StringBuilder r33 = r33.append(r34)
            r0 = r33
            r1 = r35
            java.lang.StringBuilder r33 = r0.append(r1)
            java.lang.String r33 = r33.toString()
            r32.<init>(r33)
            throw r32
        L_0x00b5:
            r0 = r38
            boolean r0 = r0.immediate
            r16 = r0
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            boolean r32 = r32.getStaticFlag()
            if (r32 == 0) goto L_0x00fb
            java.lang.String r32 = "gnu.kawa.reflect.StaticFieldLocation"
            gnu.bytecode.ClassType r20 = gnu.bytecode.ClassType.make(r32)
            java.lang.String r33 = "make"
            if (r16 == 0) goto L_0x00f8
            r32 = 1
        L_0x00d3:
            r0 = r20
            r1 = r33
            r2 = r32
            gnu.bytecode.Method r21 = r0.getDeclaredMethod(r1, r2)
        L_0x00dd:
            if (r16 == 0) goto L_0x011e
            r0 = r38
            r1 = r35
            r0.compileConstant(r1)
        L_0x00e6:
            r0 = r21
            r7.emitInvokeStatic(r0)
            r26 = r20
        L_0x00ed:
            r0 = r39
            r1 = r38
            r2 = r26
            r0.compileFromStack(r1, r2)
            goto L_0x0008
        L_0x00f8:
            r32 = 2
            goto L_0x00d3
        L_0x00fb:
            java.lang.String r32 = "gnu.kawa.reflect.FieldLocation"
            gnu.bytecode.ClassType r20 = gnu.bytecode.ClassType.make(r32)
            java.lang.String r33 = "make"
            if (r16 == 0) goto L_0x011b
            r32 = 2
        L_0x0107:
            r0 = r20
            r1 = r33
            r2 = r32
            gnu.bytecode.Method r21 = r0.getDeclaredMethod(r1, r2)
            r0 = r35
            r1 = r23
            r2 = r38
            r0.loadOwningObject(r1, r2)
            goto L_0x00dd
        L_0x011b:
            r32 = 3
            goto L_0x0107
        L_0x011e:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.ClassType r32 = r32.getDeclaringClass()
            java.lang.String r32 = r32.getName()
            r0 = r38
            r1 = r32
            r0.compileConstant(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            java.lang.String r32 = r32.getName()
            r0 = r38
            r1 = r32
            r0.compileConstant(r1)
            goto L_0x00e6
        L_0x0145:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            if (r32 == 0) goto L_0x0227
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.ClassType r32 = r32.getDeclaringClass()
            r0 = r38
            r1 = r32
            r0.usedClass(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            gnu.bytecode.Type r32 = r32.getType()
            r0 = r38
            r1 = r32
            r0.usedClass(r1)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            boolean r32 = r32.getStaticFlag()
            if (r32 != 0) goto L_0x021a
            r0 = r35
            r1 = r23
            r2 = r38
            r0.loadOwningObject(r1, r2)
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            r0 = r32
            r7.emitGetField(r0)
        L_0x018f:
            boolean r32 = r35.isIndirectBinding()
            if (r32 == 0) goto L_0x00ed
            r32 = r37 & 2
            if (r32 != 0) goto L_0x00ed
            if (r36 == 0) goto L_0x035e
            java.lang.String r12 = r36.getFileName()
            if (r12 == 0) goto L_0x035e
            int r18 = r36.getLineNumber()
            if (r18 <= 0) goto L_0x035e
            java.lang.String r32 = "gnu.mapping.UnboundLocationException"
            gnu.bytecode.ClassType r29 = gnu.bytecode.ClassType.make(r32)
            boolean r17 = r7.isInTry()
            int r8 = r36.getColumnNumber()
            gnu.bytecode.Label r27 = new gnu.bytecode.Label
            r0 = r27
            r0.<init>(r7)
            r0 = r27
            r0.define(r7)
            gnu.bytecode.Method r32 = gnu.expr.Compilation.getLocationMethod
            r0 = r32
            r7.emitInvokeVirtual(r0)
            gnu.bytecode.Label r10 = new gnu.bytecode.Label
            r10.<init>(r7)
            r10.define(r7)
            gnu.bytecode.Label r9 = new gnu.bytecode.Label
            r9.<init>(r7)
            r9.setTypes(r7)
            if (r17 == 0) goto L_0x0354
            r7.emitGoto(r9)
        L_0x01dd:
            r13 = 0
            if (r17 != 0) goto L_0x01e4
            int r13 = r7.beginFragment(r9)
        L_0x01e4:
            r0 = r27
            r1 = r29
            r7.addHandler(r0, r10, r1)
            r0 = r29
            r7.emitDup(r0)
            r7.emitPushString(r12)
            r0 = r18
            r7.emitPushInt(r0)
            r7.emitPushInt(r8)
            java.lang.String r32 = "setLine"
            r33 = 3
            r0 = r29
            r1 = r32
            r2 = r33
            gnu.bytecode.Method r32 = r0.getDeclaredMethod(r1, r2)
            r0 = r32
            r7.emitInvokeVirtual(r0)
            r7.emitThrow()
            if (r17 == 0) goto L_0x0359
            r9.define(r7)
        L_0x0216:
            gnu.bytecode.ClassType r26 = gnu.bytecode.Type.pointer_type
            goto L_0x00ed
        L_0x021a:
            r0 = r35
            gnu.bytecode.Field r0 = r0.field
            r32 = r0
            r0 = r32
            r7.emitGetStatic(r0)
            goto L_0x018f
        L_0x0227:
            boolean r32 = r35.isIndirectBinding()
            if (r32 == 0) goto L_0x0295
            r0 = r38
            boolean r0 = r0.immediate
            r32 = r0
            if (r32 == 0) goto L_0x0295
            gnu.bytecode.Variable r32 = r35.getVariable()
            if (r32 != 0) goto L_0x0295
            gnu.mapping.Environment r11 = gnu.mapping.Environment.getCurrent()
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.mapping.Symbol
            r32 = r0
            if (r32 == 0) goto L_0x0284
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            gnu.mapping.Symbol r32 = (gnu.mapping.Symbol) r32
            r28 = r32
        L_0x0257:
            r24 = 0
            boolean r32 = r35.isProcedureDecl()
            if (r32 == 0) goto L_0x026b
            gnu.expr.Language r32 = r38.getLanguage()
            boolean r32 = r32.hasSeparateFunctionNamespace()
            if (r32 == 0) goto L_0x026b
            java.lang.Object r24 = gnu.mapping.EnvironmentKey.FUNCTION
        L_0x026b:
            r0 = r28
            r1 = r24
            gnu.mapping.Location r19 = r11.getLocation(r0, r1)
            gnu.bytecode.ClassType r32 = gnu.expr.Compilation.typeLocation
            gnu.expr.Target r32 = gnu.expr.Target.pushValue(r32)
            r0 = r38
            r1 = r19
            r2 = r32
            r0.compileConstant(r1, r2)
            goto L_0x018f
        L_0x0284:
            r0 = r35
            java.lang.Object r0 = r0.symbol
            r32 = r0
            java.lang.String r32 = r32.toString()
            r0 = r32
            gnu.mapping.Symbol r28 = r11.getSymbol(r0)
            goto L_0x0257
        L_0x0295:
            r0 = r38
            boolean r0 = r0.immediate
            r32 = r0
            if (r32 == 0) goto L_0x02ae
            java.lang.Object r30 = r35.getConstantValue()
            if (r30 == 0) goto L_0x02ae
            r0 = r38
            r1 = r30
            r2 = r39
            r0.compileConstant(r1, r2)
            goto L_0x0008
        L_0x02ae:
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            gnu.expr.QuoteExp r33 = gnu.expr.QuoteExp.undefined_exp
            r0 = r32
            r1 = r33
            if (r0 == r1) goto L_0x02f7
            boolean r32 = r35.ignorable()
            if (r32 == 0) goto L_0x02f7
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.LambdaExp
            r32 = r0
            if (r32 == 0) goto L_0x02e6
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            gnu.expr.LambdaExp r32 = (gnu.expr.LambdaExp) r32
            r0 = r32
            gnu.expr.ScopeExp r0 = r0.outer
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ModuleExp
            r32 = r0
            if (r32 != 0) goto L_0x02f7
        L_0x02e6:
            r0 = r35
            gnu.expr.Expression r0 = r0.value
            r32 = r0
            r0 = r32
            r1 = r38
            r2 = r39
            r0.compile(r1, r2)
            goto L_0x0008
        L_0x02f7:
            gnu.bytecode.Variable r31 = r35.getVariable()
            r0 = r35
            gnu.expr.ScopeExp r0 = r0.context
            r32 = r0
            r0 = r32
            boolean r0 = r0 instanceof gnu.expr.ClassExp
            r32 = r0
            if (r32 == 0) goto L_0x0345
            if (r31 != 0) goto L_0x0345
            r32 = 128(0x80, double:6.32E-322)
            r0 = r35
            r1 = r32
            boolean r32 = r0.getFlag(r1)
            if (r32 != 0) goto L_0x0345
            r0 = r35
            gnu.expr.ScopeExp r6 = r0.context
            gnu.expr.ClassExp r6 = (gnu.expr.ClassExp) r6
            boolean r32 = r6.isMakingClassPair()
            if (r32 == 0) goto L_0x0345
            java.lang.String r32 = "get"
            java.lang.String r33 = r35.getName()
            java.lang.String r14 = gnu.expr.ClassExp.slotToMethodName(r32, r33)
            gnu.bytecode.ClassType r0 = r6.type
            r32 = r0
            r33 = 0
            r0 = r32
            r1 = r33
            gnu.bytecode.Method r15 = r0.getDeclaredMethod(r14, r1)
            r0 = r38
            r6.loadHeapFrame(r0)
            r7.emitInvoke(r15)
            goto L_0x018f
        L_0x0345:
            if (r31 != 0) goto L_0x034d
            r0 = r35
            gnu.bytecode.Variable r31 = r0.allocateVariable(r7)
        L_0x034d:
            r0 = r31
            r7.emitLoad(r0)
            goto L_0x018f
        L_0x0354:
            r7.setUnreachable()
            goto L_0x01dd
        L_0x0359:
            r7.endFragment(r13)
            goto L_0x0216
        L_0x035e:
            gnu.bytecode.Method r32 = gnu.expr.Compilation.getLocationMethod
            r0 = r32
            r7.emitInvokeVirtual(r0)
            goto L_0x0216
        */ throw new UnsupportedOperationException ( "Method not decompiled: gnu.expr.Declaration.load(gnu.expr.AccessExp, int, gnu.expr.Compilation, gnu.expr.Target):void" ) ; }
Code decompiled incorrectly, please refer to instructions dump.
Code decompiled incorrectly please refer to instructions dump .