// File: Heptagon196[P]Gos/GosASTCompiler.cpp
// Function: Gos::AST::Statement::CompileAST(Gos::Compiler::VMCompiler&)
Compile(Statement) {
    static std::stack<std::function<void(int)>> loopStart;
    static std::stack<std::function<void(int)>> loopOut;
    START();
    int val, startPos, iterStart;
    std::function<void(int)> ifJmp, endJmp;
    switch (branch) {
        case 1: case 10: return SUB(0);
        case 7:
            // Return
            if (nodes[0]->branch == -1) {
                vm.WriteCommandRet(0);
            } else {
                vm.WriteCommandRet(SUB(0));
            }
            return 0;
        case 8:
            // Break
            loopOut.push(vm.WriteCommandJmp());
            return 0;
        case 9:
            // Continue
            loopStart.push(vm.WriteCommandJmp());
            return 0;
        case 2: case 3:
            // If
            val = SUB(0);
            ifJmp = vm.WriteCommandIf(val);
            if (branch == 3) {
                code.MoveToNew();
                SUB(2);
                code.MoveBack();
            }
            endJmp = vm.WriteCommandJmp();
            ifJmp(vm.GetProgress());
            code.MoveToNew();
            SUB(1);
            code.MoveBack();
            endJmp(vm.GetProgress());
            return 0;
        case 4:
            // While
            startPos = vm.GetProgress();
            val = SUB(0);
            code.MoveToNew();
            ifJmp = vm.WriteCommandIf(val);
            endJmp = vm.WriteCommandJmp();
            ifJmp(vm.GetProgress());
            SUB(1);
            vm.WriteCommandJmp()(startPos);
            endJmp(vm.GetProgress());
            code.MoveBack();
            // Flow Control
            while (!loopStart.empty()) {
                loopStart.top()(startPos);
                loopStart.pop();
            }
            while (!loopOut.empty()) {
                loopOut.top()(vm.GetProgress());
                loopOut.pop();
            }
            return 0;
        case 5:
            // For
            // init
            SUB(0);
            code.MoveToNew();
            startPos = vm.GetProgress();
            // while
            val = SUB(1);
            ifJmp = vm.WriteCommandIf(val);
            endJmp = vm.WriteCommandJmp();
            ifJmp(vm.GetProgress());
            // statment
            SUB(3);
            // iter
            iterStart = vm.GetProgress();
            SUB(2);
            vm.WriteCommandJmp()(startPos);
            endJmp(vm.GetProgress());
            code.MoveBack();
            // Flow Control
            while (!loopStart.empty()) {
                loopStart.top()(iterStart);
                loopStart.pop();
            }
            while (!loopOut.empty()) {
                loopOut.top()(vm.GetProgress());
                loopOut.pop();
            }
            return 0;
        case 6:
            // Foreach
            code.MoveToNew();
            // init
            int iter = code.GetTmpVar();
            int var = pc++;
            code.currentScope->varID[nodes[0]->token.str] = var;
            code.currentScope->varType[nodes[0]->token.str] = "unknown";
            int expr = SUB(1);
            int iterEnd = code.GetTmpVar();
            vm.WriteCommandCall(expr, "__end", {});
            vm.WriteCommandRef(iterEnd, 0);
            vm.WriteCommandCall(expr, "__begin", {});
            vm.WriteCommandRef(iter, 0);
            vm.WriteCommandCall(iter, "__indirection", {});
            vm.WriteCommandRef(var, 0);
            startPos = vm.GetProgress();
            // while
            vm.WriteCommandCall(iter, "__ne", { iterEnd });
            ifJmp = vm.WriteCommandIf(0);
            endJmp = vm.WriteCommandJmp();
            ifJmp(vm.GetProgress());
            // statment
            SUB(2);
            // iter
            iterStart = vm.GetProgress();
            vm.WriteCommandCall(iter, "__inc", {});
            vm.WriteCommandRef(iter, 0);
            vm.WriteCommandCall(iter, "__indirection", {});
            vm.WriteCommandRef(var, 0);
            vm.WriteCommandJmp()(startPos);
            endJmp(vm.GetProgress());
            code.MoveBack();
            // Flow Control
            while (!loopStart.empty()) {
                loopStart.top()(iterStart);
                loopStart.pop();
            }
            while (!loopOut.empty()) {
                loopOut.top()(vm.GetProgress());
                loopOut.pop();
            }
            return 0;
    }
    return 0;
}

// Assembly:
subq $0x5d8, %rsp            # imm = 0x5D8
movq %rdi, 0x5c8(%rsp)
movq %rsi, 0x5c0(%rsp)
movq 0x5c8(%rsp), %rax
movq %rax, 0x208(%rsp)
cmpb $0x0, 0x129a32(%rip)    # 0x302350
jne 0x1d8965
leaq 0x129a29(%rip), %rdi    # 0x302350
callq 0x131e0
cmpl $0x0, %eax
je 0x1d8965
leaq 0x1299c8(%rip), %rdi    # 0x302300
callq 0x1dd430
jmp 0x1d893f
leaq 0x4b1a(%rip), %rdi      # 0x1dd460
leaq 0x1299b3(%rip), %rsi    # 0x302300
leaq 0x128a0c(%rip), %rdx    # 0x301360
callq 0x134c0
leaq 0x1299f0(%rip), %rdi    # 0x302350
callq 0x13360
cmpb $0x0, 0x129a3c(%rip)    # 0x3023a8
jne 0x1d89b3
leaq 0x129a33(%rip), %rdi    # 0x3023a8
callq 0x131e0
cmpl $0x0, %eax
je 0x1d89b3
leaq 0x1299d2(%rip), %rdi    # 0x302358
callq 0x1dd430
jmp 0x1d898d
leaq 0x4acc(%rip), %rdi      # 0x1dd460
leaq 0x1299bd(%rip), %rsi    # 0x302358
leaq 0x1289be(%rip), %rdx    # 0x301360
callq 0x134c0
leaq 0x1299fa(%rip), %rdi    # 0x3023a8
callq 0x13360
movq 0x208(%rsp), %rdi
movl 0x2c(%rdi), %eax
movl %eax, 0x129934(%rip)    # 0x3022f8
addq $0x10, %rdi
callq 0x1d1e80
cmpq $0x0, %rax
jne 0x1d8a2d
movl $0x0, 0x5d4(%rsp)
jmp 0x1da14d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x129952(%rip), %rdi    # 0x302350
callq 0x13270
jmp 0x1da15c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x129985(%rip), %rdi    # 0x3023a8
callq 0x13270
jmp 0x1da15c
leaq 0x588(%rsp), %rdi
callq 0x1dd470
leaq 0x568(%rsp), %rdi
callq 0x1dd470
movq 0x208(%rsp), %rax
movl 0x8(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x200(%rsp)
subl $0x9, %eax
ja 0x1da0ff
movq 0x200(%rsp), %rax
leaq 0x492d2(%rip), %rcx     # 0x221d48
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, 0x1fc(%rsp)
jmp 0x1d8ab0
movl 0x1fc(%rsp), %eax
movl %eax, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1da131
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rax
cmpl $-0x1, 0x8(%rax)
jne 0x1d8b1f
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
xorl %esi, %esi
callq 0x1b15f0
jmp 0x1d8b1d
jmp 0x1d8b7f
movq 0x208(%rsp), %rdi
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0x1f0(%rsp)
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, 0x1f8(%rsp)
jmp 0x1d8b67
movl 0x1f8(%rsp), %esi
movq 0x1f0(%rsp), %rdi
callq 0x1b15f0
jmp 0x1d8b7d
jmp 0x1d8b7f
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x540(%rsp), %rdi
callq 0x1b1630
jmp 0x1d8bb8
leaq 0x129799(%rip), %rdi    # 0x302358
leaq 0x540(%rsp), %rsi
callq 0x1dd4b0
jmp 0x1d8bce
leaq 0x540(%rsp), %rdi
callq 0x1d1c80
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x540(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da131
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x520(%rsp), %rdi
callq 0x1b1630
jmp 0x1d8c3a
leaq 0x1296bf(%rip), %rdi    # 0x302300
leaq 0x520(%rsp), %rsi
callq 0x1dd4b0
jmp 0x1d8c50
leaq 0x520(%rsp), %rdi
callq 0x1d1c80
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x520(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da131
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, 0x1ec(%rsp)
jmp 0x1d8ccf
movl 0x1ec(%rsp), %eax
movl %eax, 0x5b0(%rsp)
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
movl 0x5b0(%rsp), %edx
leaq 0x500(%rsp), %rdi
callq 0x1b1760
jmp 0x1d8d02
leaq 0x588(%rsp), %rdi
leaq 0x500(%rsp), %rsi
callq 0x1dd4e0
leaq 0x500(%rsp), %rdi
callq 0x1d1c80
movq 0x208(%rsp), %rax
cmpl $0x3, 0x8(%rax)
jne 0x1d8d79
movq 0x5c0(%rsp), %rdi
callq 0x1d50f0
jmp 0x1d8d41
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
movl $0x2, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d8d6c
movq 0x5c0(%rsp), %rdi
callq 0x1d5230
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x4e0(%rsp), %rdi
callq 0x1b1630
jmp 0x1d8d97
leaq 0x568(%rsp), %rdi
leaq 0x4e0(%rsp), %rsi
movq %rsi, 0x1e0(%rsp)
callq 0x1dd4e0
movq 0x1e0(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x1e8(%rsp)
jmp 0x1d8dde
movl 0x1e8(%rsp), %esi
leaq 0x588(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d8df4
movq 0x5c0(%rsp), %rdi
callq 0x1d50f0
jmp 0x1d8e03
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
movl $0x1, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d8e2e
movq 0x5c0(%rsp), %rdi
callq 0x1d5230
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x1dc(%rsp)
jmp 0x1d8e58
movl 0x1dc(%rsp), %esi
leaq 0x568(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d8e6e
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x1d8(%rsp)
jmp 0x1d8ea6
movq 0x208(%rsp), %rdi
movl 0x1d8(%rsp), %eax
movl %eax, 0x5ac(%rsp)
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, 0x1d4(%rsp)
jmp 0x1d8ee5
movl 0x1d4(%rsp), %eax
movl %eax, 0x5b0(%rsp)
movq 0x5c0(%rsp), %rdi
callq 0x1d50f0
jmp 0x1d8f02
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
movl 0x5b0(%rsp), %edx
leaq 0x4c0(%rsp), %rdi
callq 0x1b1760
jmp 0x1d8f27
leaq 0x588(%rsp), %rdi
leaq 0x4c0(%rsp), %rsi
movq %rsi, 0x1c8(%rsp)
callq 0x1dd4e0
movq 0x1c8(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x4a0(%rsp), %rdi
callq 0x1b1630
jmp 0x1d8f6f
leaq 0x568(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
movq %rsi, 0x1b8(%rsp)
callq 0x1dd4e0
movq 0x1b8(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x1c4(%rsp)
jmp 0x1d8fb6
movl 0x1c4(%rsp), %esi
leaq 0x588(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d8fcc
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
movl $0x1, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d8ff7
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x480(%rsp), %rdi
callq 0x1b1630
jmp 0x1d9015
movl 0x5ac(%rsp), %esi
leaq 0x480(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d902b
leaq 0x480(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x1b4(%rsp)
jmp 0x1d9055
movl 0x1b4(%rsp), %esi
leaq 0x568(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d906b
movq 0x5c0(%rsp), %rdi
callq 0x1d5230
leaq 0x129281(%rip), %rdi    # 0x302300
callq 0x1dd530
movb %al, 0x1b3(%rsp)
jmp 0x1d908d
movb 0x1b3(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d909c
jmp 0x1d90fe
leaq 0x12925d(%rip), %rdi    # 0x302300
callq 0x1dd550
movq %rax, 0x1a8(%rsp)
jmp 0x1d90b2
movq 0x1a8(%rsp), %rdi
movl 0x5ac(%rsp), %esi
callq 0x1d1c40
jmp 0x1d90c8
leaq 0x129231(%rip), %rdi    # 0x302300
callq 0x1dd560
jmp 0x1d90d6
jmp 0x1d9078
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x480(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da131
jmp 0x1d9100
leaq 0x129251(%rip), %rdi    # 0x302358
callq 0x1dd530
movb %al, 0x1a7(%rsp)
jmp 0x1d9115
movb 0x1a7(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d9124
jmp 0x1d917d
leaq 0x12922d(%rip), %rdi    # 0x302358
callq 0x1dd550
movq %rax, 0x198(%rsp)
jmp 0x1d913a
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x194(%rsp)
jmp 0x1d9157
movl 0x194(%rsp), %esi
movq 0x198(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d916d
leaq 0x1291e4(%rip), %rdi    # 0x302358
callq 0x1dd560
jmp 0x1d917b
jmp 0x1d9100
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d91c2
movq 0x5c0(%rsp), %rdi
callq 0x1d50f0
jmp 0x1d91d1
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x190(%rsp)
jmp 0x1d91ee
movq 0x208(%rsp), %rdi
movl 0x190(%rsp), %eax
movl %eax, 0x5ac(%rsp)
addq $0x10, %rdi
movl $0x1, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, 0x18c(%rsp)
jmp 0x1d922e
movl 0x18c(%rsp), %eax
movl %eax, 0x5b0(%rsp)
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
movl 0x5b0(%rsp), %edx
leaq 0x460(%rsp), %rdi
callq 0x1b1760
jmp 0x1d9261
leaq 0x588(%rsp), %rdi
leaq 0x460(%rsp), %rsi
movq %rsi, 0x180(%rsp)
callq 0x1dd4e0
movq 0x180(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x440(%rsp), %rdi
callq 0x1b1630
jmp 0x1d92a9
leaq 0x568(%rsp), %rdi
leaq 0x440(%rsp), %rsi
movq %rsi, 0x170(%rsp)
callq 0x1dd4e0
movq 0x170(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x17c(%rsp)
jmp 0x1d92f0
movl 0x17c(%rsp), %esi
leaq 0x588(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d9306
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
movl $0x3, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d9331
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x16c(%rsp)
jmp 0x1d934e
movq 0x208(%rsp), %rdi
movl 0x16c(%rsp), %eax
movl %eax, 0x5a8(%rsp)
addq $0x10, %rdi
movl $0x2, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d9387
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x420(%rsp), %rdi
callq 0x1b1630
jmp 0x1d93a5
movl 0x5ac(%rsp), %esi
leaq 0x420(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d93bb
leaq 0x420(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x168(%rsp)
jmp 0x1d93e5
movl 0x168(%rsp), %esi
leaq 0x568(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d93fb
movq 0x5c0(%rsp), %rdi
callq 0x1d5230
leaq 0x128ef1(%rip), %rdi    # 0x302300
callq 0x1dd530
movb %al, 0x167(%rsp)
jmp 0x1d941d
movb 0x167(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d942c
jmp 0x1d948e
leaq 0x128ecd(%rip), %rdi    # 0x302300
callq 0x1dd550
movq %rax, 0x158(%rsp)
jmp 0x1d9442
movq 0x158(%rsp), %rdi
movl 0x5a8(%rsp), %esi
callq 0x1d1c40
jmp 0x1d9458
leaq 0x128ea1(%rip), %rdi    # 0x302300
callq 0x1dd560
jmp 0x1d9466
jmp 0x1d9408
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x420(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da131
jmp 0x1d9490
leaq 0x128ec1(%rip), %rdi    # 0x302358
callq 0x1dd530
movb %al, 0x157(%rsp)
jmp 0x1d94a5
movb 0x157(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d94b4
jmp 0x1d950d
leaq 0x128e9d(%rip), %rdi    # 0x302358
callq 0x1dd550
movq %rax, 0x148(%rsp)
jmp 0x1d94ca
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x144(%rsp)
jmp 0x1d94e7
movl 0x144(%rsp), %esi
movq 0x148(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d94fd
leaq 0x128e54(%rip), %rdi    # 0x302358
callq 0x1dd560
jmp 0x1d950b
jmp 0x1d9490
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movq 0x5c0(%rsp), %rdi
callq 0x1d50f0
jmp 0x1d9537
movq 0x5c0(%rsp), %rdi
callq 0x1d5250
movq 0x208(%rsp), %rdi
movl %eax, 0x41c(%rsp)
movq 0x5c0(%rsp), %rcx
movl 0xe0(%rcx), %eax
movl %eax, %edx
incl %edx
movl %edx, 0xe0(%rcx)
movl %eax, 0x418(%rsp)
movl 0x418(%rsp), %eax
movl %eax, 0x12c(%rsp)
movq 0x5c0(%rsp), %rax
movq 0xd0(%rax), %rax
addq $0x28, %rax
movq %rax, 0x130(%rsp)
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq 0x130(%rsp), %rdi
movq (%rax), %rsi
addq $0x40, %rsi
callq 0x1b4880
movq %rax, 0x138(%rsp)
jmp 0x1d95c6
movq 0x208(%rsp), %rdi
movq 0x138(%rsp), %rax
movl 0x12c(%rsp), %ecx
movl %ecx, (%rax)
movq 0x5c0(%rsp), %rax
movq 0xd0(%rax), %rax
addq $0x60, %rax
movq %rax, 0x118(%rsp)
addq $0x10, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1d1e60
movq 0x118(%rsp), %rdi
movq (%rax), %rsi
addq $0x40, %rsi
callq 0x1dcf70
movq %rax, 0x120(%rsp)
jmp 0x1d9625
movq 0x120(%rsp), %rdi
leaq 0x489f4(%rip), %rsi     # 0x222028
callq 0x1652e0
jmp 0x1d963b
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
movl $0x1, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, 0x114(%rsp)
jmp 0x1d966d
movl 0x114(%rsp), %eax
movl %eax, 0x414(%rsp)
movq 0x5c0(%rsp), %rdi
callq 0x1d5250
movl %eax, 0x410(%rsp)
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0xf8(%rsp)
movl 0x414(%rsp), %eax
movl %eax, 0x104(%rsp)
leaq 0x3ef(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x13570
movq 0x108(%rsp), %rdx
leaq 0x32084(%rip), %rsi     # 0x20b75c
leaq 0x3f0(%rsp), %rdi
callq 0x165520
jmp 0x1d96e7
xorps %xmm0, %xmm0
movaps %xmm0, 0x3d0(%rsp)
movq $0x0, 0x3e0(%rsp)
leaq 0x3d0(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x1dd1b0
movq 0xf8(%rsp), %rdi
movl 0x104(%rsp), %esi
movq 0xf0(%rsp), %rcx
leaq 0x3f0(%rsp), %rdx
callq 0x1b1940
jmp 0x1d9739
leaq 0x3d0(%rsp), %rdi
callq 0x1dd280
leaq 0x3f0(%rsp), %rdi
callq 0x52f50
leaq 0x3ef(%rsp), %rdi
callq 0x136a0
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
movl 0x410(%rsp), %esi
xorl %edx, %edx
callq 0x1b11a0
jmp 0x1d977f
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0xd8(%rsp)
movl 0x414(%rsp), %eax
movl %eax, 0xe4(%rsp)
leaq 0x3af(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x13570
movq 0xe8(%rsp), %rdx
leaq 0x31f8c(%rip), %rsi     # 0x20b754
leaq 0x3b0(%rsp), %rdi
callq 0x165520
jmp 0x1d97d7
xorps %xmm0, %xmm0
movaps %xmm0, 0x390(%rsp)
movq $0x0, 0x3a0(%rsp)
leaq 0x390(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x1dd1b0
movq 0xd8(%rsp), %rdi
movl 0xe4(%rsp), %esi
movq 0xd0(%rsp), %rcx
leaq 0x3b0(%rsp), %rdx
callq 0x1b1940
jmp 0x1d9829
leaq 0x390(%rsp), %rdi
callq 0x1dd280
leaq 0x3b0(%rsp), %rdi
callq 0x52f50
leaq 0x3af(%rsp), %rdi
callq 0x136a0
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
movl 0x41c(%rsp), %esi
xorl %edx, %edx
callq 0x1b11a0
jmp 0x1d986f
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0xb8(%rsp)
movl 0x41c(%rsp), %eax
movl %eax, 0xc4(%rsp)
leaq 0x36f(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x13570
movq 0xc8(%rsp), %rdx
leaq 0x31eb6(%rip), %rsi     # 0x20b76e
leaq 0x370(%rsp), %rdi
callq 0x165520
jmp 0x1d98c7
xorps %xmm0, %xmm0
movaps %xmm0, 0x350(%rsp)
movq $0x0, 0x360(%rsp)
leaq 0x350(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x1dd1b0
movq 0xb8(%rsp), %rdi
movl 0xc4(%rsp), %esi
movq 0xb0(%rsp), %rcx
leaq 0x370(%rsp), %rdx
callq 0x1b1940
jmp 0x1d9919
leaq 0x350(%rsp), %rdi
callq 0x1dd280
leaq 0x370(%rsp), %rdi
callq 0x52f50
leaq 0x36f(%rsp), %rdi
callq 0x136a0
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
movl 0x418(%rsp), %esi
xorl %edx, %edx
callq 0x1b11a0
jmp 0x1d995f
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0xac(%rsp)
jmp 0x1d997c
movl 0xac(%rsp), %eax
movl %eax, 0x5ac(%rsp)
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0x90(%rsp)
movl 0x41c(%rsp), %eax
movl %eax, 0x9c(%rsp)
leaq 0x32f(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x13570
movq 0xa0(%rsp), %rdx
leaq 0x31d3a(%rip), %rsi     # 0x20b70d
leaq 0x330(%rsp), %rdi
callq 0x165520
jmp 0x1d99e2
movl 0x410(%rsp), %eax
movl %eax, 0x2fc(%rsp)
leaq 0x2fc(%rsp), %rax
movq %rax, 0x300(%rsp)
movq $0x1, 0x308(%rsp)
leaq 0x2fb(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x5ae50
movq 0x88(%rsp), %rcx
movq 0x300(%rsp), %rsi
movq 0x308(%rsp), %rdx
leaq 0x310(%rsp), %rdi
callq 0x1dd1f0
jmp 0x1d9a48
movl 0x9c(%rsp), %esi
movq 0x90(%rsp), %rdi
leaq 0x330(%rsp), %rdx
leaq 0x310(%rsp), %rcx
callq 0x1b1940
jmp 0x1d9a6e
leaq 0x310(%rsp), %rdi
callq 0x1dd280
leaq 0x2fb(%rsp), %rdi
callq 0x5ae60
leaq 0x330(%rsp), %rdi
callq 0x52f50
leaq 0x32f(%rsp), %rdi
callq 0x136a0
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x2d8(%rsp), %rdi
xorl %edx, %edx
callq 0x1b1760
jmp 0x1d9ac2
leaq 0x588(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
movq %rsi, 0x80(%rsp)
callq 0x1dd4e0
movq 0x80(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x2b8(%rsp), %rdi
callq 0x1b1630
jmp 0x1d9b0a
leaq 0x568(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
movq %rsi, 0x70(%rsp)
callq 0x1dd4e0
movq 0x70(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x7c(%rsp)
jmp 0x1d9b48
movl 0x7c(%rsp), %esi
leaq 0x588(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d9b5b
movq 0x208(%rsp), %rdi
addq $0x10, %rdi
movl $0x2, %esi
callq 0x1d1e60
movq (%rax), %rdi
movq 0x5c0(%rsp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d9b86
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x6c(%rsp)
jmp 0x1d9ba0
movl 0x6c(%rsp), %eax
movl %eax, 0x5a8(%rsp)
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0x50(%rsp)
movl 0x41c(%rsp), %eax
movl %eax, 0x5c(%rsp)
leaq 0x297(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x13570
movq 0x60(%rsp), %rdx
leaq 0x31b7a(%rip), %rsi     # 0x20b762
leaq 0x298(%rsp), %rdi
callq 0x165520
jmp 0x1d9bf7
xorps %xmm0, %xmm0
movaps %xmm0, 0x270(%rsp)
movq $0x0, 0x280(%rsp)
leaq 0x270(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x1dd1b0
movq 0x50(%rsp), %rdi
movl 0x5c(%rsp), %esi
movq 0x48(%rsp), %rcx
leaq 0x298(%rsp), %rdx
callq 0x1b1940
jmp 0x1d9c3d
leaq 0x270(%rsp), %rdi
callq 0x1dd280
leaq 0x298(%rsp), %rdi
callq 0x52f50
leaq 0x297(%rsp), %rdi
callq 0x136a0
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
movl 0x41c(%rsp), %esi
xorl %edx, %edx
callq 0x1b11a0
jmp 0x1d9c83
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rax
movq %rax, 0x30(%rsp)
movl 0x41c(%rsp), %eax
movl %eax, 0x3c(%rsp)
leaq 0x24f(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x13570
movq 0x40(%rsp), %rdx
leaq 0x31aae(%rip), %rsi     # 0x20b76e
leaq 0x250(%rsp), %rdi
callq 0x165520
jmp 0x1d9ccf
xorps %xmm0, %xmm0
movaps %xmm0, 0x230(%rsp)
movq $0x0, 0x240(%rsp)
leaq 0x230(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x1dd1b0
movq 0x30(%rsp), %rdi
movl 0x3c(%rsp), %esi
movq 0x28(%rsp), %rcx
leaq 0x250(%rsp), %rdx
callq 0x1b1940
jmp 0x1d9d15
leaq 0x230(%rsp), %rdi
callq 0x1dd280
leaq 0x250(%rsp), %rdi
callq 0x52f50
leaq 0x24f(%rsp), %rdi
callq 0x136a0
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
movl 0x418(%rsp), %esi
xorl %edx, %edx
callq 0x1b11a0
jmp 0x1d9d5b
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rsi
leaq 0x210(%rsp), %rdi
callq 0x1b1630
jmp 0x1d9d79
movl 0x5ac(%rsp), %esi
leaq 0x210(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d9d8f
leaq 0x210(%rsp), %rdi
callq 0x1d1c80
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x24(%rsp)
jmp 0x1d9db6
movl 0x24(%rsp), %esi
leaq 0x568(%rsp), %rdi
callq 0x1d1c40
jmp 0x1d9dc9
movq 0x5c0(%rsp), %rdi
callq 0x1d5230
leaq 0x128523(%rip), %rdi    # 0x302300
callq 0x1dd530
movb %al, 0x23(%rsp)
jmp 0x1d9de8
movb 0x23(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d9df7
jmp 0x1da07a
leaq 0x128502(%rip), %rdi    # 0x302300
callq 0x1dd550
movq %rax, 0x18(%rsp)
jmp 0x1d9e0a
movq 0x18(%rsp), %rdi
movl 0x5a8(%rsp), %esi
callq 0x1d1c40
jmp 0x1d9e1d
leaq 0x1284dc(%rip), %rdi    # 0x302300
callq 0x1dd560
jmp 0x1d9e2b
jmp 0x1d9dd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1d9e71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x3d0(%rsp), %rdi
callq 0x1dd280
leaq 0x3f0(%rsp), %rdi
callq 0x52f50
leaq 0x3ef(%rsp), %rdi
callq 0x136a0
jmp 0x1da131
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1d9ec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x390(%rsp), %rdi
callq 0x1dd280
leaq 0x3b0(%rsp), %rdi
callq 0x52f50
leaq 0x3af(%rsp), %rdi
callq 0x136a0
jmp 0x1da131
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1d9f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x1dd280
leaq 0x370(%rsp), %rdi
callq 0x52f50
leaq 0x36f(%rsp), %rdi
callq 0x136a0
jmp 0x1da131
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1d9f96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1d9f7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x310(%rsp), %rdi
callq 0x1dd280
leaq 0x2fb(%rsp), %rdi
callq 0x5ae60
leaq 0x330(%rsp), %rdi
callq 0x52f50
leaq 0x32f(%rsp), %rdi
callq 0x136a0
jmp 0x1da131
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1d9fec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x1dd280
leaq 0x298(%rsp), %rdi
callq 0x52f50
leaq 0x297(%rsp), %rdi
callq 0x136a0
jmp 0x1da131
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
jmp 0x1da042
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x230(%rsp), %rdi
callq 0x1dd280
leaq 0x250(%rsp), %rdi
callq 0x52f50
leaq 0x24f(%rsp), %rdi
callq 0x136a0
jmp 0x1da131
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5b8(%rsp)
movl %eax, 0x5b4(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da131
jmp 0x1da07c
leaq 0x1282d5(%rip), %rdi    # 0x302358
callq 0x1dd530
movb %al, 0x17(%rsp)
jmp 0x1da08e
movb 0x17(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1da09a
jmp 0x1da0e7
leaq 0x1282b7(%rip), %rdi    # 0x302358
callq 0x1dd550
movq %rax, 0x8(%rsp)
jmp 0x1da0ad
movq 0x5c0(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x1b1b80
movl %eax, 0x4(%rsp)
jmp 0x1da0c7
movl 0x4(%rsp), %esi
movq 0x8(%rsp), %rdi
callq 0x1d1c40
jmp 0x1da0d7
leaq 0x12827a(%rip), %rdi    # 0x302358
callq 0x1dd560
jmp 0x1da0e5
jmp 0x1da07c
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
jmp 0x1da115
movl $0x0, 0x5d4(%rsp)
movl $0x1, 0x564(%rsp)
leaq 0x568(%rsp), %rdi
callq 0x1d1c80
leaq 0x588(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da14d
leaq 0x568(%rsp), %rdi
callq 0x1d1c80
leaq 0x588(%rsp), %rdi
callq 0x1d1c80
jmp 0x1da15c
movl 0x5d4(%rsp), %eax
addq $0x5d8, %rsp            # imm = 0x5D8
retq
movq 0x5b8(%rsp), %rdi
callq 0x133f0
nopl (%rax)