// File: /workspace/github_cpp_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rsi, %rbx
movq %rdi, %r14
movb 0x75145(%rip), %al      # 0x11e2e0
testb %al, %al
je 0xa9fbc
movb 0x7518f(%rip), %al      # 0x11e338
testb %al, %al
je 0xaa02f
movl 0x2c(%r14), %eax
movl %eax, 0x750cd(%rip)     # 0x11e288
movq 0x10(%r14), %rax
cmpq %rax, 0x18(%r14)
je 0xa920f
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movaps %xmm0, 0x40(%rsp)
movaps %xmm0, 0x30(%rsp)
movl 0x8(%r14), %ecx
xorl %ebp, %ebp
decl %ecx
cmpl $0x9, %ecx
ja 0xa9f6c
leaq 0x26c10(%rip), %rdx     # 0xcfe04
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq (%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movl %eax, %ebp
jmp 0xa9f6c
xorl %ebp, %ebp
jmp 0xa9f9e
movq (%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
movl %eax, %edx
callq 0x99b74
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0xac0ce
movq 0x10(%r15), %rax
testq %rax, %rax
je 0xa925e
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
cmpl $0x3, 0x8(%r14)
jne 0xa928e
movq %rbx, %rdi
callq 0xa6f80
movq 0x10(%r14), %rax
movq 0x10(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xd0(%rbx), %rax
movq (%rax), %rax
movq %rax, 0xd0(%rbx)
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0xac0ce
movq 0x10(%r15), %rax
testq %rax, %rax
je 0xa92c9
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0xa9fb2
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq %rbx, %rdi
callq 0xa6f80
movq 0x10(%r14), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xd0(%rbx), %rax
movq 0xe8(%rbx), %rdi
movq (%rax), %rax
movq %rax, 0xd0(%rbx)
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xa9fb2
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
jmp 0xa9f6c
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, %r15d
movq 0x10(%r14), %rax
movq (%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movl %eax, %r12d
movq %rbx, %rdi
callq 0xa6f80
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
movl %r12d, %edx
callq 0x99b74
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0xac0ce
movq 0x10(%r12), %rax
testq %rax, %rax
je 0xa93b1
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0xac0ce
movq 0x10(%r12), %rax
testq %rax, %rax
je 0xa93ed
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0xa9fb2
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq 0x10(%r14), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
movl %r15d, 0x28(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0xaa0a2
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq *0x18(%rdi)
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xa946e
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xa9fb2
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq 0xd0(%rbx), %rax
movq (%rax), %rax
movq %rax, 0xd0(%rbx)
movq 0x74e11(%rip), %rax     # 0x11e2c0
cmpq 0x74dea(%rip), %rax     # 0x11e2a0
je 0xa9513
movl $0x200, %r13d           # imm = 0x200
leaq 0x8(%rsp), %r14
leaq 0x74dc6(%rip), %r12     # 0x11e290
cmpq 0x74df7(%rip), %rax     # 0x11e2c8
jne 0xa94e1
movq 0x74dfe(%rip), %rax     # 0x11e2d8
movq -0x8(%rax), %rax
addq %r13, %rax
movl %r15d, 0x8(%rsp)
cmpq $0x0, -0x10(%rax)
je 0xa9fb2
leaq -0x20(%rax), %rdi
movq %r14, %rsi
callq *-0x8(%rax)
movq %r12, %rdi
callq 0xad732
movq 0x74db6(%rip), %rax     # 0x11e2c0
cmpq 0x74d8f(%rip), %rax     # 0x11e2a0
jne 0xa94ca
movq 0x74dfe(%rip), %r13     # 0x11e318
cmpq 0x74dd7(%rip), %r13     # 0x11e2f8
je 0xa9f6c
movl $0x200, %r12d           # imm = 0x200
leaq 0x8(%rsp), %r14
leaq 0x74daf(%rip), %r15     # 0x11e2e8
cmpq 0x74de0(%rip), %r13     # 0x11e320
jne 0xa9550
movq 0x74de7(%rip), %rax     # 0x11e330
movq -0x8(%rax), %r13
addq %r12, %r13
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, -0x10(%r13)
je 0xa9fb2
leaq -0x20(%r13), %rdi
movq %r14, %rsi
callq *-0x8(%r13)
movq %r15, %rdi
callq 0xad732
movq 0x74d93(%rip), %r13     # 0x11e318
cmpq 0x74d6c(%rip), %r13     # 0x11e2f8
jne 0xa9539
jmp 0xa9f6c
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
leaq 0x74ce5(%rip), %rdi     # 0x11e290
leaq 0x8(%rsp), %rsi
callq 0xad472
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xa9f6c
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xa9f6c
movq (%rax), %rdi
xorl %ebp, %ebp
cmpl $-0x1, 0x8(%rdi)
movq 0xe8(%rbx), %r14
movl $0x0, %esi
je 0xa95f8
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movl %eax, %esi
movq %r14, %rdi
callq 0x99acc
jmp 0xa9f6c
movq (%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq %rbx, %rdi
callq 0xa6f80
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, %r15d
movq 0x10(%r14), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
movl %eax, %edx
callq 0x99b74
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0xac0ce
movq 0x10(%r12), %rax
testq %rax, %rax
je 0xa9675
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
callq 0xac0ce
movq 0x10(%r12), %rax
testq %rax, %rax
je 0xa96b1
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0xa9fb2
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq 0x10(%r14), %rax
movq 0x18(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, %r12d
movq 0x10(%r14), %rax
movq 0x10(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
movl %r15d, 0x28(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0xaa0a7
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq *0x18(%rdi)
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xa9751
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xa9fb2
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq 0xd0(%rbx), %rax
movq (%rax), %rax
movq %rax, 0xd0(%rbx)
movq 0x74b2e(%rip), %rax     # 0x11e2c0
cmpq 0x74b07(%rip), %rax     # 0x11e2a0
je 0xa97f6
movl $0x200, %r13d           # imm = 0x200
leaq 0x8(%rsp), %r14
leaq 0x74ae3(%rip), %r15     # 0x11e290
cmpq 0x74b14(%rip), %rax     # 0x11e2c8
jne 0xa97c4
movq 0x74b1b(%rip), %rax     # 0x11e2d8
movq -0x8(%rax), %rax
addq %r13, %rax
movl %r12d, 0x8(%rsp)
cmpq $0x0, -0x10(%rax)
je 0xa9fb2
leaq -0x20(%rax), %rdi
movq %r14, %rsi
callq *-0x8(%rax)
movq %r15, %rdi
callq 0xad732
movq 0x74ad3(%rip), %rax     # 0x11e2c0
cmpq 0x74aac(%rip), %rax     # 0x11e2a0
jne 0xa97ad
movq 0x74b1b(%rip), %r13     # 0x11e318
cmpq 0x74af4(%rip), %r13     # 0x11e2f8
je 0xa9f6c
movl $0x200, %r12d           # imm = 0x200
leaq 0x8(%rsp), %r14
leaq 0x74acc(%rip), %r15     # 0x11e2e8
cmpq 0x74afd(%rip), %r13     # 0x11e320
jne 0xa9833
movq 0x74b04(%rip), %rax     # 0x11e330
movq -0x8(%rax), %r13
addq %r12, %r13
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, -0x10(%r13)
je 0xa9fb2
leaq -0x20(%r13), %rdi
movq %r14, %rsi
callq *-0x8(%r13)
movq %r15, %rdi
callq 0xad732
movq 0x74ab0(%rip), %r13     # 0x11e318
cmpq 0x74a89(%rip), %r13     # 0x11e2f8
jne 0xa981c
jmp 0xa9f6c
movq %rbx, %rdi
callq 0xa6f80
leaq 0x100(%rbx), %r15
movq %r15, %rax
movq (%rax), %rax
testq %rax, %rax
je 0xa98eb
cmpb $0x0, 0xc(%rax)
jne 0xa9888
movb $0x1, 0xc(%rax)
movl 0x8(%rax), %r12d
movl 0xe0(%rbx), %r13d
jmp 0xa98fe
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
leaq 0x74a29(%rip), %rdi     # 0x11e2e8
leaq 0x8(%rsp), %rsi
callq 0xad472
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xa9f6c
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xa9f6c
movl 0xe0(%rbx), %r12d
leal 0x1(%r12), %r13d
movl %r13d, 0xe0(%rbx)
leal 0x1(%r13), %eax
movl %eax, 0xe0(%rbx)
movq 0xd0(%rbx), %rdi
addq $0x28, %rdi
movq 0x10(%r14), %rax
movq (%rax), %rsi
addq $0x40, %rsi
callq 0x9b46a
movl %r13d, (%rax)
movq 0xd0(%rbx), %rdi
addq $0x60, %rdi
movq 0x10(%r14), %rax
movq (%rax), %rsi
addq $0x40, %rsi
callq 0xaca12
movq 0x8(%rax), %rdx
leaq 0x26795(%rip), %rcx     # 0xd00e1
movl $0x7, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x26f38
movq 0x10(%r14), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movl %eax, %ebp
movq %r13, 0x80(%rsp)
movq (%r15), %r15
testq %r15, %r15
je 0xa9990
cmpb $0x0, 0xc(%r15)
jne 0xa9976
movb $0x1, 0xc(%r15)
movl 0x8(%r15), %r13d
jmp 0xa99a1
movl 0xe0(%rbx), %r13d
leal 0x1(%r13), %eax
movl %eax, 0xe0(%rbx)
movq 0xe8(%rbx), %r15
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1241d(%rip), %rsi     # 0xbbdd5
leaq 0x1241b(%rip), %rdx     # 0xbbdda
leaq 0x8(%rsp), %rdi
callq 0x27370
xorps %xmm0, %xmm0
leaq 0x120(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
movl %ebp, %esi
callq 0x99cd6
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xa9a0b
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa9a27
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rdi
movl %r13d, %esi
xorl %edx, %edx
callq 0x9951e
movq 0xe8(%rbx), %r15
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1237a(%rip), %rsi     # 0xbbdcd
leaq 0x1237a(%rip), %rdx     # 0xbbdd4
callq 0x27370
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
movl %ebp, %esi
callq 0x99cd6
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0xa9aa1
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa9abd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rdi
movl %r12d, %esi
xorl %edx, %edx
callq 0x9951e
movq 0xe8(%rbx), %r15
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x122fe(%rip), %rsi     # 0xbbde7
leaq 0x12304(%rip), %rdx     # 0xbbdf4
callq 0x27370
xorps %xmm0, %xmm0
leaq 0xe0(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
movl %r12d, %esi
callq 0x99cd6
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0xa9b38
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa9b54
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rdi
movq 0x80(%rsp), %rsi
xorl %edx, %edx
callq 0x9951e
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x7c(%rsp)
movq 0xe8(%rbx), %rbp
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x121f1(%rip), %rsi     # 0xbbd86
leaq 0x121ee(%rip), %rdx     # 0xbbd8a
callq 0x27370
leaq 0x28(%rsp), %rsi
movl %r13d, (%rsi)
leaq 0x88(%rsp), %rdi
leaq 0x2f(%rsp), %rcx
movl $0x1, %edx
callq 0xac002
leaq 0x8(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rbp, %rdi
movl %r12d, %esi
callq 0x99cd6
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xa9bf5
movq 0x98(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa9c11
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
xorl %edx, %edx
callq 0x99b74
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0xac0ce
movq 0x10(%r15), %rax
testq %rax, %rax
je 0xa9c4e
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %r15
movq %r15, %rsi
callq 0xac0ce
movq 0x10(%r15), %rax
testq %rax, %rax
je 0xa9c89
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0xa9fb7
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq 0x10(%r14), %rax
movq 0x10(%rax), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, %r14d
movq 0xe8(%rbx), %r15
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x120ef(%rip), %rsi     # 0xbbddb
leaq 0x120ed(%rip), %rdx     # 0xbbde0
callq 0x27370
xorps %xmm0, %xmm0
leaq 0xc0(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
movl %r12d, %esi
callq 0x99cd6
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0xa9d3b
movq 0xd0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa9d57
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rdi
movl %r12d, %esi
xorl %edx, %edx
callq 0x9951e
movq 0xe8(%rbx), %r15
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
movq %rax, (%rdi)
leaq 0x12064(%rip), %rsi     # 0xbbde7
leaq 0x1206a(%rip), %rdx     # 0xbbdf4
callq 0x27370
xorps %xmm0, %xmm0
leaq 0xa0(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
movl %r12d, %esi
callq 0x99cd6
movq 0x80(%rsp), %r15
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0xa9dda
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa9df6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x9951e
movq 0xe8(%rbx), %rsi
leaq 0x8(%rsp), %rdi
callq 0x99b0a
movl 0x7c(%rsp), %eax
movl %eax, 0x28(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0xaa0ac
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq *0x18(%rdi)
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xa9e52
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xa9fb7
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq *0x18(%rdi)
movq 0xd0(%rbx), %rax
movq (%rax), %rax
movq %rax, 0xd0(%rbx)
movq 0x7442d(%rip), %rax     # 0x11e2c0
cmpq 0x74406(%rip), %rax     # 0x11e2a0
je 0xa9ef7
movl $0x200, %r13d           # imm = 0x200
leaq 0x8(%rsp), %r15
leaq 0x743e2(%rip), %r12     # 0x11e290
cmpq 0x74413(%rip), %rax     # 0x11e2c8
jne 0xa9ec5
movq 0x7441a(%rip), %rax     # 0x11e2d8
movq -0x8(%rax), %rax
addq %r13, %rax
movl %r14d, 0x8(%rsp)
cmpq $0x0, -0x10(%rax)
je 0xa9fb7
leaq -0x20(%rax), %rdi
movq %r15, %rsi
callq *-0x8(%rax)
movq %r12, %rdi
callq 0xad732
movq 0x743d2(%rip), %rax     # 0x11e2c0
cmpq 0x743ab(%rip), %rax     # 0x11e2a0
jne 0xa9eae
movq 0x7441a(%rip), %r13     # 0x11e318
xorl %ebp, %ebp
cmpq 0x743f1(%rip), %r13     # 0x11e2f8
je 0xa9f6c
movl $0x200, %r12d           # imm = 0x200
leaq 0x8(%rsp), %r14
leaq 0x743cd(%rip), %r15     # 0x11e2e8
cmpq 0x743fe(%rip), %r13     # 0x11e320
jne 0xa9f32
movq 0x74405(%rip), %rax     # 0x11e330
movq -0x8(%rax), %r13
addq %r12, %r13
movq 0xe8(%rbx), %rdi
callq 0x99f3a
movl %eax, 0x8(%rsp)
cmpq $0x0, -0x10(%r13)
je 0xa9fb7
leaq -0x20(%r13), %rdi
movq %r14, %rsi
callq *-0x8(%r13)
movq %r15, %rdi
callq 0xad732
movq 0x743b5(%rip), %r13     # 0x11e318
cmpq 0x7438e(%rip), %r13     # 0x11e2f8
jne 0xa9f1b
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0xa9f85
leaq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x60(%rsp), %rax
testq %rax, %rax
je 0xa9f9e
leaq 0x50(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movl %ebp, %eax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x11150
callq 0x11150
leaq 0x7431d(%rip), %rdi     # 0x11e2e0
callq 0x11590
testl %eax, %eax
je 0xa91a3
xorps %xmm0, %xmm0
movups %xmm0, 0x742f6(%rip)    # 0x11e2d0
movups %xmm0, 0x742df(%rip)    # 0x11e2c0
movups %xmm0, 0x742c8(%rip)    # 0x11e2b0
movups %xmm0, 0x742b1(%rip)    # 0x11e2a0
movups %xmm0, 0x7429a(%rip)    # 0x11e290
leaq 0x74293(%rip), %rdi     # 0x11e290
xorl %esi, %esi
callq 0xad2de
leaq 0x20bd(%rip), %rdi      # 0xac0c8
leaq 0x7427e(%rip), %rsi     # 0x11e290
leaq 0x732e7(%rip), %rdx     # 0x11d300
callq 0x11320
leaq 0x742bb(%rip), %rdi     # 0x11e2e0
callq 0x11230
jmp 0xa91a3
leaq 0x74302(%rip), %rdi     # 0x11e338
callq 0x11590
testl %eax, %eax
je 0xa91b1
xorps %xmm0, %xmm0
movups %xmm0, 0x742db(%rip)    # 0x11e328
movups %xmm0, 0x742c4(%rip)    # 0x11e318
movups %xmm0, 0x742ad(%rip)    # 0x11e308
movups %xmm0, 0x74296(%rip)    # 0x11e2f8
movups %xmm0, 0x7427f(%rip)    # 0x11e2e8
leaq 0x74278(%rip), %rdi     # 0x11e2e8
xorl %esi, %esi
callq 0xad2de
leaq 0x204a(%rip), %rdi      # 0xac0c8
leaq 0x74263(%rip), %rsi     # 0x11e2e8
leaq 0x73274(%rip), %rdx     # 0x11d300
callq 0x11320
leaq 0x742a0(%rip), %rdi     # 0x11e338
callq 0x11230
jmp 0xa91b1
callq 0x11150
callq 0x11150
callq 0x11150
movq %rax, %rbx
leaq 0x7427d(%rip), %rdi     # 0x11e338
jmp 0xaa0c7
movq %rax, %rbx
leaq 0x74219(%rip), %rdi     # 0x11e2e0
callq 0x11210
jmp 0xaa34a
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa354
jmp 0xaa315
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1ef
movq 0xb0(%rsp), %rsi
jmp 0xaa1e7
jmp 0xaa315
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1ef
movq 0xd0(%rsp), %rsi
jmp 0xaa1e7
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
movq %rax, %rbx
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1ef
movq 0x98(%rsp), %rsi
jmp 0xaa1e7
movq %rax, %rbx
jmp 0xaa1ef
jmp 0xaa315
jmp 0xaa315
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1ef
movq 0xf0(%rsp), %rsi
jmp 0xaa1e7
jmp 0xaa315
jmp 0xaa315
movq %rax, %rbx
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1ef
movq 0x110(%rsp), %rsi
jmp 0xaa1e7
jmp 0xaa315
movq %rax, %rbx
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xaa1ef
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xaa318
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x11360
jmp 0xaa318
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
movq %rax, %rbx
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xaa318
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xaa318
jmp 0xaa354
movq %rax, %rbx
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xaa318
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xaa318
jmp 0xaa354
jmp 0xaa315
jmp 0xaa315
jmp 0xaa354
jmp 0xaa354
movq %rax, %rbx
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xaa318
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xaa318
jmp 0xaa354
movq %rax, %rbx
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xaa318
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xaa318
jmp 0xaa354
movq %rax, %rbx
movq 0x18(%rsp), %rax
testq %rax, %rax
je 0xaa318
leaq 0x8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xaa318
jmp 0xaa354
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa354
jmp 0xaa354
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
jmp 0xaa315
movq %rax, %rbx
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0xaa331
leaq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x60(%rsp), %rax
testq %rax, %rax
je 0xaa34a
leaq 0x50(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbx, %rdi
callq 0x11580
jmp 0xaa354
movq %rax, %rdi
callq 0x26e38