// File: /workspace/github_cpp_makefile_star2_O1/Heptagon196[P]Gos/GosASTCompiler.cpp
// Function: Gos::AST::LambdaDef::CompileAST(Gos::Compiler::VMCompiler&)
Compile(LambdaDef) {
    START();

    int start = 0;
    std::stringstream ss;
    ss << compilingFileName << ":" << compilingLine << "_#" << (lambdaCount++);
    std::string lambdaName = ss.str();
    std::vector<std::pair<std::string, int>> captureVarNames;
    std::vector<int> captureType;
    std::vector<std::string> captureTypeName;
    std::vector<int> capturedID;
    std::vector<std::string> argTypes;
    std::vector<std::string> argNames;
    std::vector<std::string> ctorTypes;
    if (branch & 1) {
        std::string errorInfo;
        for (GosAST* ast : nodes[start]->nodes) {
            int id = code.currentScope->GetVarID(ast->token.str, errorInfo);
            std::string varType = "";
            if (errorInfo.size() > 0) {
                for (int i = 0; i < compilingClassVars.size(); i++) {
                    if (compilingClassVars[i] == ast->token.str) {
                        int& cache = GetFieldCache(code.currentScope, ast->token.str);
                        if (cache != -1) {
                            id = cache;
                        } else {
                            id = code.GetTmpVar();
                            vm.WriteCommandGetField(id, 1, ast->token.str);
                            cache = id;
                        }
                        varType = compilingClassVarTypes[i];
                        errorInfo = "";
                        break;
                    }
                }
                if (errorInfo.size() > 0) {
                    std::cerr << errorInfo << std::endl;
                }
            } else {
                varType = code.currentScope->GetVarType(ast->token.str);
            }
            captureVarNames.push_back({ ast->token.str, id });
            captureType.push_back(ast->branch);
            capturedID.push_back(captureVarNames[captureVarNames.size() - 1].second);
            captureTypeName.push_back(varType);
        }
        start++;
    }
    if (branch & 2) {
        for (auto* ast : nodes[start]->nodes) {
            argNames.push_back(ast->nodes[0]->token.str);
            argTypes.push_back(ast->nodes[1]->token.str);
        }
        start++;
    }

    auto jmpFromStartTo = vm.WriteCommandJmp();
    int startPos = vm.GetProgress();

    vm.WriteCommandDefClass(lambdaName, {});

    for (int i = 0; i < captureVarNames.size(); i++) {
        vm.WriteCommandDefVar(captureTypeName[i], captureVarNames[i].first);
        ctorTypes.push_back(captureTypeName[i]);
    }

    code.MoveToNew();
    int pcBack = pc;

    auto jmpCall = vm.WriteCommandDefFunc("__call", nodes[start++]->token.str, argTypes);
    auto setMemSize = vm.WriteAlloc();

    pc = 1;

    vm.WriteCommandArg(pc++, 0);
    for (int i = 0; i < argNames.size(); i++) {
        int id = pc++;
        vm.WriteCommandArg(id, i + 1);
        code.currentScope->varID[argNames[i]] = id;
        code.currentScope->varType[argNames[i]] = argTypes[i];
    }

    for (int i = 0; i < captureVarNames.size(); i++) {
        int id = pc++;
        vm.WriteCommandGetField(id, 1, captureVarNames[i].first);
        code.currentScope->varID[captureVarNames[i].first] = id;
        code.currentScope->varType[captureVarNames[i].first] = captureTypeName[i];
    }

    SUB(start++);

    jmpCall(vm.GetProgress());

    setMemSize(pc);
    pc = pcBack;
    code.MoveBack();

    code.lambdaDefStartPos.push_back(startPos);
    code.lambdaDefJumpout.push_back(vm.WriteCommandJmp());
    jmpFromStartTo(vm.GetProgress());

    int tmp = code.GetTmpVar();
    vm.WriteCommandNew(lambdaName, tmp, capturedID);

    for (int i = 0; i < captureVarNames.size(); i++) {
        int id = pc++;
        vm.WriteCommandGetField(id, tmp, captureVarNames[i].first);
        if (captureType[i] == 0) {
            if (captureTypeName[i] == "unknown") {
                vm.WriteCommandClone(id, captureVarNames[i].second);
            } else {
                vm.WriteCommandMov(id, captureVarNames[i].second);
            }
        } else {
            vm.WriteCommandRef(id, captureVarNames[i].second);
        }
    }

    return tmp;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x368, %rsp            # imm = 0x368
movl 0x2c(%rdi), %eax
movl %eax, 0x740c0(%rip)     # 0x11f288
movq 0x18(%rdi), %rax
cmpq 0x10(%rdi), %rax
je 0xab6eb
movq %rsi, %rbx
movq %rdi, 0x80(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0x11280
leaq 0x1f0(%rsp), %rdi
movq 0x74003(%rip), %rsi     # 0x11f200
movq 0x74004(%rip), %rdx     # 0x11f208
callq 0x113c0
movq %rax, %r14
leaq 0x11b3e(%rip), %rsi     # 0xbcd51
movl $0x1, %edx
movq %rax, %rdi
callq 0x113c0
movl 0x74062(%rip), %esi     # 0x11f288
movq %r14, %rdi
callq 0x11550
movq %rax, %r14
leaq 0x25ef1(%rip), %rsi     # 0xd1129
movl $0x2, %edx
movq %rax, %rdi
callq 0x113c0
movl 0x740f9(%rip), %esi     # 0x11f344
leal 0x1(%rsi), %eax
movl %eax, 0x740f0(%rip)     # 0x11f344
movq %r14, %rdi
callq 0x11550
leaq 0x1f8(%rsp), %rsi
leaq 0x180(%rsp), %rdi
callq 0x112b0
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
xorl %r12d, %r12d
movq %r12, 0x20(%rsp)
movq %r12, 0xc0(%rsp)
movaps %xmm0, 0xb0(%rsp)
movq %r12, 0x120(%rsp)
movaps %xmm0, 0x110(%rsp)
movq %r12, 0xa0(%rsp)
movaps %xmm0, 0x90(%rsp)
movq %r12, 0x160(%rsp)
movaps %xmm0, 0x150(%rsp)
movq %r12, 0x100(%rsp)
movaps %xmm0, 0xf0(%rsp)
movq %r12, 0x1b0(%rsp)
movaps %xmm0, 0x1a0(%rsp)
movq 0x80(%rsp), %rax
testb $0x1, 0x8(%rax)
movq %rbx, 0x8(%rsp)
je 0xab71d
leaq 0x70(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
movq 0x10(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %r14
movq 0x18(%rax), %rax
movq %rax, 0x178(%rsp)
cmpq %rax, %r14
je 0xab6f3
leaq 0x40(%rsp), %rbp
leaq 0x100(%rbx), %rax
movq %rax, 0x168(%rsp)
leaq 0xd8(%rsp), %r13
movq (%r14), %rax
movq 0xd0(%rbx), %rdi
movq %rax, 0x88(%rsp)
leaq 0x40(%rax), %r15
movq %r15, %rsi
leaq 0x60(%rsp), %rdx
callq 0xa798c
movl %eax, %r12d
movq %rbp, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x25227(%rip), %rdx     # 0xd05a6
movq %rdx, %rsi
callq 0x27dc8
cmpq $0x0, 0x68(%rsp)
je 0xab6b5
movq %r14, 0x128(%rsp)
movq 0x73ea6(%rip), %rbx     # 0x11f248
movq 0x73e97(%rip), %r14     # 0x11f240
subq %r14, %rbx
je 0xab400
sarq $0x5, %rbx
movq 0x88(%rsp), %rax
movq 0x48(%rax), %rbp
cmpq $0x1, %rbx
adcq $0x0, %rbx
xorl %r13d, %r13d
movq 0x8(%r14,%r13), %rdx
cmpq %rbp, %rdx
jne 0xab3e8
testq %rdx, %rdx
je 0xab40a
movq (%r15), %rsi
movq (%r14,%r13), %rdi
callq 0x11390
testl %eax, %eax
je 0xab40a
addq $0x20, %r13
decq %rbx
jne 0xab3c9
movq 0x8(%rsp), %rbx
leaq 0x40(%rsp), %rbp
jmp 0xab539
movq 0x8(%rsp), %rbx
jmp 0xab539
movq %r15, 0x50(%rsp)
movq 0x8(%rsp), %rax
movq 0xd0(%rax), %rbp
testq %rbp, %rbp
sete %bl
movq %rbp, 0x170(%rsp)
je 0xab468
leaq 0x98(%rbp), %r14
movq %r14, %rdi
movq 0x50(%rsp), %rsi
callq 0x9bd66
movq %rax, %r12
testq %rax, %rax
je 0xab457
movq %r14, %rdi
movq 0x50(%rsp), %rsi
callq 0x9c09a
movq %rax, %r15
testq %r12, %r12
jne 0xab468
movq (%rbp), %rbp
testq %rbp, %rbp
sete %bl
jne 0xab42b
testb $0x1, %bl
movq 0x8(%rsp), %rbx
leaq 0x40(%rsp), %rbp
movq %r15, %r14
movq 0x50(%rsp), %r15
je 0xab4ad
movq 0x170(%rsp), %r14
addq $0x98, %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x9c09a
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq %r14, %rdi
movq %r15, %rsi
callq 0x9c09a
movq %rax, %r14
movl (%r14), %r12d
cmpl $-0x1, %r12d
jne 0xab50a
movq 0x168(%rsp), %rax
movq (%rax), %rax
testq %rax, %rax
je 0xab4d9
movb 0xc(%rax), %cl
testb %cl, %cl
jne 0xab4d5
movb $0x1, 0xc(%rax)
movl 0x8(%rax), %r12d
testb %cl, %cl
jne 0xab4be
testq %rax, %rax
jne 0xab4f0
movl 0xe0(%rbx), %r12d
leal 0x1(%r12), %eax
movl %eax, 0xe0(%rbx)
movq 0xe8(%rbx), %rdi
movl %r12d, %esi
movl $0x1, %edx
movq %r15, %rcx
callq 0x9a296
movl %r12d, (%r14)
addq 0x73d47(%rip), %r13     # 0x11f258
leaq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0x3a2e8
movq 0x68(%rsp), %rdx
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
leaq 0x25075(%rip), %rcx     # 0xd05a6
xorl %r8d, %r8d
callq 0x27996
movq 0x68(%rsp), %rdx
testq %rdx, %rdx
je 0xab590
movq 0x60(%rsp), %rsi
movq 0x72aa1(%rip), %rdi     # 0x11dff0
callq 0x113c0
movq 0x128(%rsp), %r14
leaq 0xd8(%rsp), %r13
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x11340
movsbl %al, %esi
movq %r15, %rdi
callq 0x11040
movq %rax, %rdi
callq 0x11260
jmp 0xab5a0
movq 0x128(%rsp), %r14
leaq 0xd8(%rsp), %r13
movq %r13, 0xc8(%rsp)
movq 0x88(%rsp), %rax
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %r15
movq %r15, %rdi
callq 0x37586
movl %r12d, 0xe8(%rsp)
leaq 0x10(%rsp), %rdi
movq %r15, %rsi
callq 0xae644
movq 0xc8(%rsp), %rdi
cmpq %r13, %rdi
movq 0x88(%rsp), %r15
je 0xab605
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x11360
addq $0x8, %r15
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0xab62e
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xb8(%rsp)
jmp 0xab63e
leaq 0xb0(%rsp), %rdi
movq %r15, %rdx
callq 0xae90c
movq 0x18(%rsp), %rdx
addq $-0x8, %rdx
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0xab66b
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x98(%rsp)
jmp 0xab678
leaq 0x90(%rsp), %rdi
callq 0xae90c
leaq 0x110(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x9b36e
movq 0x30(%rsp), %rdi
cmpq %rbp, %rdi
je 0xab6a1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11360
addq $0x8, %r14
cmpq 0x178(%rsp), %r14
jne 0xab348
jmp 0xab6f3
movq 0xd0(%rbx), %rsi
leaq 0x1c0(%rsp), %rdi
movq %r15, %rdx
callq 0xa7ae6
leaq 0x30(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
callq 0x1209b
jmp 0xab5a0
xorl %r14d, %r14d
jmp 0xabde1
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xab70f
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x11360
movl $0x1, %r12d
movq 0x80(%rsp), %rax
testb $0x2, 0x8(%rax)
je 0xab786
movq 0x10(%rax), %rax
movl %r12d, %ecx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rbx
movq 0x18(%rax), %r13
cmpq %r13, %rbx
je 0xab77e
leaq 0xf0(%rsp), %r14
leaq 0x150(%rsp), %r15
movq (%rbx), %rbp
movq 0x10(%rbp), %rax
movq (%rax), %rsi
addq $0x40, %rsi
movq %r14, %rdi
callq 0x9b36e
movq 0x10(%rbp), %rax
movq 0x8(%rax), %rsi
addq $0x40, %rsi
movq %r15, %rdi
callq 0x9b36e
addq $0x8, %rbx
cmpq %r13, %rbx
jne 0xab74b
incl %r12d
movq 0x8(%rsp), %rbx
movq 0xe8(%rbx), %rsi
leaq 0xc8(%rsp), %rdi
callq 0x9a744
movq 0xe8(%rbx), %rdi
callq 0x9ab88
movl %eax, 0x5c(%rsp)
movq 0xe8(%rbx), %rdi
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %rdx
movaps %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq 0x180(%rsp), %rsi
callq 0x99736
leaq 0x60(%rsp), %rdi
callq 0x3740c
movq 0x10(%rsp), %rdx
cmpq %rdx, 0x18(%rsp)
je 0xab858
xorl %r15d, %r15d
leaq 0x1a0(%rsp), %r14
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0x8(%rsp), %rax
movq 0xe8(%rax), %rdi
movq 0x110(%rsp), %rsi
addq %rbx, %rsi
addq %r15, %rdx
callq 0x99876
movq 0x110(%rsp), %rsi
addq %rbx, %rsi
movq %r14, %rdi
callq 0x9b36e
incq %r13
movq 0x10(%rsp), %rdx
movq 0x18(%rsp), %rax
subq %rdx, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
addq $0x20, %rbx
addq $0x28, %r15
cmpq %r13, %rax
ja 0xab7f7
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xa7c10
movl 0xe0(%rbx), %ebp
movq 0xe8(%rbx), %r14
leaq 0x40(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x1155b(%rip), %rsi     # 0xbcddd
leaq 0x1155a(%rip), %rdx     # 0xbcde3
leaq 0x30(%rsp), %rdi
callq 0x27dc8
movq 0x80(%rsp), %rax
movq 0x10(%rax), %rax
movl %r12d, %r15d
movq (%rax,%r15,8), %rcx
addq $0x40, %rcx
leaq 0x60(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x150(%rsp), %r8
movq %r14, %rsi
callq 0x99956
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0xab8db
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0xe8(%rbx), %rsi
leaq 0x30(%rsp), %rdi
callq 0x9ab8c
movq 0xe8(%rbx), %rdi
movl $0x2, 0xe0(%rbx)
movl $0x1, %esi
xorl %edx, %edx
callq 0x9a22c
xorl %r12d, %r12d
xorl %r13d, %r13d
movq 0xf8(%rsp), %rax
subq 0xf0(%rsp), %rax
sarq $0x5, %rax
cmpq %r13, %rax
jbe 0xab9a7
movl 0xe0(%rbx), %r14d
leal 0x1(%r14), %eax
movl %eax, 0xe0(%rbx)
movq 0xe8(%rbx), %rdi
leal 0x1(%r13), %edx
movl %r14d, %esi
callq 0x9a22c
movq 0xd0(%rbx), %rdi
addq $0x28, %rdi
movq 0xf0(%rsp), %rsi
addq %r12, %rsi
callq 0x9c09a
movl %r14d, (%rax)
movq 0x150(%rsp), %r14
movq 0xd0(%rbx), %rdi
addq $0x60, %rdi
movq 0xf0(%rsp), %rsi
addq %r12, %rsi
callq 0xad878
addq %r12, %r14
addq $0x20, %r12
incq %r13
movq %rax, %rdi
movq %r14, %rsi
callq 0x3a2e8
jmp 0xab90f
movl %ebp, 0x50(%rsp)
movq 0x10(%rsp), %rcx
cmpq %rcx, 0x18(%rsp)
je 0xaba67
xorl %r12d, %r12d
xorl %r13d, %r13d
xorl %ebp, %ebp
movl 0xe0(%rbx), %r14d
leal 0x1(%r14), %eax
movl %eax, 0xe0(%rbx)
movq 0xe8(%rbx), %rdi
addq %r13, %rcx
movl %r14d, %esi
movl $0x1, %edx
callq 0x9a296
movq 0xd0(%rbx), %rdi
addq $0x28, %rdi
movq 0x10(%rsp), %rsi
addq %r13, %rsi
callq 0x9c09a
movl %r14d, (%rax)
movq 0x110(%rsp), %r14
movq 0xd0(%rbx), %rdi
addq $0x60, %rdi
movq 0x10(%rsp), %rsi
addq %r13, %rsi
callq 0xad878
addq %r12, %r14
movq %rax, %rdi
movq %r14, %rsi
callq 0x3a2e8
incq %rbp
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
subq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rax
addq $0x28, %r13
addq $0x20, %r12
cmpq %rbp, %rax
ja 0xab9c3
movq 0x80(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax,%r15,8), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *(%rax)
movl 0x50(%rsp), %r15d
movq 0xe8(%rbx), %rdi
callq 0x9ab88
movl %eax, 0x130(%rsp)
cmpq $0x0, 0x70(%rsp)
je 0xabdf6
leaq 0x60(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq *0x18(%rdi)
movl 0xe0(%rbx), %eax
movl %eax, 0x130(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xabdf6
leaq 0x30(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq *0x18(%rdi)
movl %r15d, 0xe0(%rbx)
movq 0xd0(%rbx), %rax
movq 0x130(%rbx), %rsi
movq (%rax), %rax
movq %rax, 0xd0(%rbx)
cmpq 0x138(%rbx), %rsi
je 0xabb18
movl 0x5c(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x130(%rbx)
jmp 0xabb29
leaq 0x128(%rbx), %rdi
leaq 0x5c(%rsp), %rdx
callq 0xae90c
movq 0xe8(%rbx), %rsi
leaq 0x130(%rsp), %rdi
callq 0x9a744
leaq 0x140(%rbx), %rdi
leaq 0x130(%rsp), %rsi
callq 0xae9e8
movq 0x140(%rsp), %rax
testq %rax, %rax
je 0xabb70
leaq 0x130(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xe8(%rbx), %rdi
callq 0x9ab88
movl %eax, 0x130(%rsp)
cmpq $0x0, 0xd8(%rsp)
je 0xabdf6
leaq 0xc8(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq *0x18(%rdi)
leaq 0x100(%rbx), %rax
movq (%rax), %rax
testq %rax, %rax
je 0xabbc7
movb 0xc(%rax), %cl
testb %cl, %cl
jne 0xabbc3
movb $0x1, 0xc(%rax)
movl 0x8(%rax), %r14d
testb %cl, %cl
jne 0xabbac
testq %rax, %rax
jne 0xabbdd
movl 0xe0(%rbx), %r14d
leal 0x1(%r14), %eax
movl %eax, 0xe0(%rbx)
movq 0xe8(%rbx), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x90(%rsp), %rcx
movl %r14d, %edx
callq 0x99e82
movq 0x10(%rsp), %rcx
cmpq %rcx, 0x18(%rsp)
je 0xabcd6
xorl %ebp, %ebp
xorl %r15d, %r15d
xorl %r13d, %r13d
movl 0xe0(%rbx), %r12d
leal 0x1(%r12), %eax
movl %eax, 0xe0(%rbx)
movq 0xe8(%rbx), %rdi
addq %r15, %rcx
movl %r12d, %esi
movl %r14d, %edx
callq 0x9a296
movq 0xb0(%rsp), %rax
cmpl $0x0, (%rax,%r13,4)
je 0xabc65
movq 0xe8(%rbx), %rdi
movq 0x10(%rsp), %rax
movl 0x20(%rax,%r15), %edx
movl %r12d, %esi
callq 0x9a158
jmp 0xabca3
movq 0x110(%rsp), %rdi
addq %rbp, %rdi
leaq 0x2549a(%rip), %rsi     # 0xd1111
callq 0x282a0
movq 0xe8(%rbx), %rdi
movq 0x10(%rsp), %rcx
movl 0x20(%rcx,%r15), %edx
testl %eax, %eax
je 0xabc9b
movl %r12d, %esi
callq 0x9a0ee
jmp 0xabca3
movl %r12d, %esi
callq 0x9a1c2
incq %r13
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
subq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rax
addq $0x28, %r15
addq $0x20, %rbp
cmpq %r13, %rax
ja 0xabc14
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0xabcef
leaq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xabd08
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xd8(%rsp), %rax
testq %rax, %rax
je 0xabd27
leaq 0xc8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1a0(%rsp), %rdi
callq 0x3740c
leaq 0xf0(%rsp), %rdi
callq 0x3740c
leaq 0x150(%rsp), %rdi
callq 0x3740c
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xabd6b
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x110(%rsp), %rdi
callq 0x3740c
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xabd95
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x10(%rsp), %rdi
callq 0xacfce
leaq 0x190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xabdc0
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0x721d1(%rip), %rsi     # 0x11df98
leaq 0x1e0(%rsp), %rdi
callq 0x112c0
leaq 0x260(%rsp), %rdi
callq 0x11120
movl %r14d, %eax
addq $0x368, %rsp            # imm = 0x368
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x11150
jmp 0xac031
jmp 0xac031
jmp 0xac031
jmp 0xac031
jmp 0xabf17
movq %rax, %rbx
movq 0x140(%rsp), %rax
testq %rax, %rax
je 0xabf1a
leaq 0x130(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xabf1a
jmp 0xac031
jmp 0xabf17
movq %rax, %rbx
jmp 0xabf33
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0xabf4c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11360
jmp 0xabf4c
jmp 0xabed1
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x3740c
jmp 0xabf4c
jmp 0xabec7
jmp 0xabe8e
jmp 0xabed1
movq %rax, %rbx
jmp 0xac004
jmp 0xabed8
jmp 0xabe9a
movq %rax, %rbx
jmp 0xabef7
jmp 0xabed8
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %r13, %rdi
je 0xabedb
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x11360
jmp 0xabedb
jmp 0xabed8
jmp 0xabf17
movq %rax, %rbx
jmp 0xabf6b
jmp 0xabf17
movq %rax, %rbx
jmp 0xabf4c
jmp 0xabed8
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xabef7
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xabf6b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x11360
jmp 0xabf6b
jmp 0xabf17
movq %rax, %rbx
movq 0x40(%rsp), %rax
testq %rax, %rax
je 0xabf33
leaq 0x30(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xabf4c
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xd8(%rsp), %rax
testq %rax, %rax
je 0xabf6b
leaq 0xc8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1a0(%rsp), %rdi
callq 0x3740c
leaq 0xf0(%rsp), %rdi
callq 0x3740c
leaq 0x150(%rsp), %rdi
callq 0x3740c
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xabfaf
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x110(%rsp), %rdi
callq 0x3740c
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xabfd9
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x10(%rsp), %rdi
callq 0xacfce
leaq 0x190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xac004
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x11360
movq 0x71f8d(%rip), %rsi     # 0x11df98
leaq 0x1e0(%rsp), %rdi
callq 0x112c0
leaq 0x260(%rsp), %rdi
callq 0x11120
movq %rbx, %rdi
callq 0x11580
jmp 0xac031
jmp 0xac031
movq %rax, %rdi
callq 0x2789a
nop