// File: /workspace/github_cpp_makefile_star2_O2/sudocode1[P]radio/compiler.cpp
// Function: main
int main() {
    std::string input;
    std::cout << "enter radio filename: ";
    std::getline(std::cin, input);
    std::cout << input << std::endl;
    std::vector <std::string> lines;{};
    std::string currentLine;
    std::ifstream file(input);
    std::vector<std::string> structs{};



    while (std::getline (file, currentLine)) {
        if (currentLine.rfind("@incl", 0) == 0) {
            readIncl(currentLine.substr(6), &lines);
        } else {
            lines.push_back(currentLine);
        }
        
    };

    file.close();

    std::ofstream writeFile("output.c");

    writeFile << "#include <stdio.h>\n";
    writeFile << "#include <string.h>\n";
    writeFile << "int main(){\n";

    int i=1;
    for (std::string line : lines) {
        std::vector<std::string> sep = split(line, ' ');

        if (line.rfind("out!", 0) == 0) {
            writeFile << "printf(" << line.substr(5) << ");\nprintf(\"\\n\");\n"; 
        } 
        else if (line.rfind("out", 0) == 0) {
            writeFile << "printf(" << line.substr(4) << ");\n"; 
        } 
        else if (line.rfind(";;", 0) == 0) {
            if (line.size() > 2) {
                writeFile << "//" << line.substr(2) << "\n";
            } else {
                writeFile << "//\n";
            }
        }
        else if (line.rfind("@structure", 0) == 0) {
            writeFile << "typedef struct {\n";
        }
        else if (line.rfind("@struct_access_property", 0) == 0) {
            std::string placeholder = "\%s";
            
            if (sep[1] == "str") {
                placeholder = "\%s";
            } else if (sep[1] == "int" || sep[1] == "float" || sep[1] == "double") {
                placeholder = "\%d";
            }

            writeFile << "printf(\"" << placeholder << "\"," << sep[2] << ");\n";
        }
        else if (line.rfind("@strout", 0) == 0) {
            writeFile << "printf(\"%s\", " << line.substr(8) << ");\n"; 
        } 
        else if (line.rfind("@intout", 0) == 0) {
            writeFile << "printf(\"%d\", " << line.substr(8) << ");\n"; 
        } 
        else if (line.rfind("@floatout", 0) == 0) {
            writeFile << "printf(\"%f\", " << line.substr(9) << ");\n"; 
        }
        else if (line.rfind("@!define", 0) == 0) {
            writeFile << sep[1] << " " << sep[2] << "() {\n";
        }
        else if (line.rfind("@define", 0) == 0) {
            writeFile << sep[1] << " " << sep[2] << " (";
        }
        else if (line.rfind("@param", 0) == 0) {
            writeFile << sep[1] << " " << sep[2] << ",";
        }
        else if (line.rfind("@finalparam", 0) == 0) {
            writeFile << sep[1] << " " << sep[2] << "){\n";
        }
        else if (line.rfind("@call", 0) == 0) {
            writeFile << sep[1] << "(" << line.substr(sep[0].size() + 1 + sep[1].size() + 1) << ");\n";
        }
        else if (line.rfind("@!call", 0) == 0) {
            writeFile << sep[1] << "();\n";
        }
        else if (line.rfind("@str", 0) == 0) {
            writeFile << "char* " << line.substr(5) << ";\n"; 
        } 
        else if (line.rfind("@int", 0) == 0) {
            writeFile << "int " << line.substr(5) << ";\n"; 
        } 
        else if (line.rfind("@float", 0) == 0) {
            writeFile << "float " << line.substr(7) << ";\n"; 
        }
        else if (line.rfind("@double", 0) == 0) {
            writeFile << "double " << line.substr(8) << ";\n"; 
        }
        else if (line.rfind("@redefine", 0) == 0) {
            writeFile << sep[1] << " = " << line.substr(sep[0].size() + sep[1].size() + 1) << ";\n"; 
        }
        else if (line.rfind("end", 0) == 0) {
            writeFile << "}\n";
        }
        else if (line.rfind("if", 0) == 0) {
            writeFile << "if(" << line.substr(3) << "){\n";
        }
        else if (line.rfind("else if", 0) == 0) {
            writeFile << "else if(" << line.substr(8) << "){\n";
        }
        else if (line.rfind("elif", 0) == 0) {
            writeFile << "else if(" << line.substr(5) << "){\n";
        }
        else if (line.rfind("else", 0) == 0) {
            writeFile << "else {\n";
        }
        else if (line.rfind("while", 0) == 0) {
            writeFile << "while(" << line.substr(6) << "){\n";
        }
        else if (line.rfind("for", 0) == 0) {
            writeFile << "for(" << line.substr(4) << "){\n";
        }
        else if (line.rfind("@nl", 0) == 0) {
            writeFile << "printf(\"\\n\");\n";
        }
        else if (line.rfind("@property", 0) == 0) {
            if (sep[1] == "str") {
                writeFile << "char * " << sep[2] << ";\n";
            } else if (sep[1] == "float") {
                writeFile << "float *" << sep[2] << ";\n";
            } else if (sep[1] == "double") {
                writeFile << "double * " << sep[2] << ";\n";
            } else if (sep[1] == "int") {
                writeFile << "int " << sep[2] << ";\n";
            }
        }
        else if (line.rfind("@create_struct", 0) == 0) {
            writeFile << sep[1] << " " << sep[2] << ";\n";
        }
        else if (line.rfind("@endstructure", 0) == 0) {
            writeFile << "} " << sep[1] << ";\n";
            structs.push_back(sep[1]);
        } 
        else {
            std::cout << "ERR: Line " << i << "\n" << line << "\n";
            break;
        }

        i++;
    }
    writeFile << "return 0;\n}";
    writeFile.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x528, %rsp            # imm = 0x528
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x3a5b(%rip), %rdi      # 0x5fd0
leaq 0x1aa4(%rip), %rsi      # 0x4020
callq 0x2140
movq 0x3a58(%rip), %rdi      # 0x5fe0
leaq -0xc0(%rbp), %rsi
callq 0x2030
movq 0x3a35(%rip), %rdi      # 0x5fd0
leaq -0xc0(%rbp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x20c0
andq $0x0, -0x70(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x80(%rbp)
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x548(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
pushq $0x8
popq %rdx
callq 0x2200
andq $0x0, -0x90(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xa0(%rbp)
leaq -0x548(%rbp), %rbx
leaq -0xe0(%rbp), %r14
leaq 0x1a2c(%rip), %r15      # 0x4037
leaq -0x340(%rbp), %r12
leaq -0x80(%rbp), %r13
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2030
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2674
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x264e
movq %r13, %rdi
movq %r14, %rsi
callq 0x3508
jmp 0x2616
movq %r12, %rdi
movq %r14, %rsi
pushq $0x6
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %r12, %rdi
movq %r13, %rsi
callq 0x248b
movq %r12, %rdi
callq 0x20b0
jmp 0x2616
leaq -0x548(%rbp), %rdi
callq 0x2040
leaq 0x19b6(%rip), %rsi      # 0x403d
leaq -0x300(%rbp), %rdi
pushq $0x10
popq %rdx
callq 0x2180
leaq 0x19a9(%rip), %rsi      # 0x4046
leaq -0x300(%rbp), %rdi
callq 0x2140
leaq 0x19aa(%rip), %rsi      # 0x405a
leaq -0x300(%rbp), %rdi
callq 0x2140
leaq 0x19ac(%rip), %rsi      # 0x406f
leaq -0x300(%rbp), %rdi
callq 0x2140
movq -0x80(%rbp), %r14
movq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
pushq $0x1
popq %rax
movl %eax, -0x48(%rbp)
leaq -0x100(%rbp), %r12
leaq -0x68(%rbp), %r15
cmpq -0x88(%rbp), %r14
je 0x336c
movq %r12, %rdi
movq %r14, %rsi
callq 0x21a0
leaq -0x320(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x21a0
leaq -0x40(%rbp), %rdi
movq %rbx, %rsi
pushq $0x20
popq %rdx
callq 0x23bc
movq %rbx, %rdi
callq 0x20b0
movq %r12, %rdi
leaq 0x1942(%rip), %rsi      # 0x407c
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2ac2
movq %r12, %rdi
leaq 0x199c(%rip), %rsi      # 0x40f0
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2b0b
movq %r12, %rdi
leaq 0x192d(%rip), %rsi      # 0x409b
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2b54
movq %r12, %rdi
leaq 0x191d(%rip), %rsi      # 0x40a5
xorl %edx, %edx
callq 0x2220
leaq -0x300(%rbp), %rdi
leaq 0x1913(%rip), %rsi      # 0x40b0
testq %rax, %rax
je 0x2f31
movq %r12, %rdi
leaq 0x1912(%rip), %rsi      # 0x40c2
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2bb2
movq %r12, %rdi
leaq 0x1922(%rip), %rsi      # 0x40ec
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2c9f
movq %r12, %rdi
leaq 0x191e(%rip), %rsi      # 0x4102
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2ce8
movq %r12, %rdi
leaq 0x191a(%rip), %rsi      # 0x4118
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2d2e
movq %r12, %rdi
leaq 0x1918(%rip), %rsi      # 0x4130
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2da1
movq %r12, %rdi
leaq 0x190d(%rip), %rsi      # 0x413f
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2de3
movq %r12, %rdi
leaq 0x18fe(%rip), %rsi      # 0x414a
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2e25
movq %r12, %rdi
leaq 0x18eb(%rip), %rsi      # 0x4151
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2e67
movq %r12, %rdi
leaq 0x18dd(%rip), %rsi      # 0x415d
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2ea9
movq %r12, %rdi
leaq 0x18c9(%rip), %rsi      # 0x4163
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2f13
movq %r12, %rdi
leaq 0x18bb(%rip), %rsi      # 0x416f
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2f3b
movq %r12, %rdi
leaq 0x18ad(%rip), %rsi      # 0x417b
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2f84
movq %r12, %rdi
leaq 0x189d(%rip), %rsi      # 0x4185
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x2fcd
movq %r12, %rdi
leaq 0x1891(%rip), %rsi      # 0x4193
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x3016
movq %r12, %rdi
leaq 0x1887(%rip), %rsi      # 0x41a3
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x305f
movq %r12, %rdi
leaq 0x187b(%rip), %rsi      # 0x41b1
xorl %edx, %edx
callq 0x2220
leaq -0x300(%rbp), %rdi
leaq 0x186a(%rip), %rsi      # 0x41b5
testq %rax, %rax
je 0x2f31
movq %r12, %rdi
leaq 0x185f(%rip), %rsi      # 0x41bd
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x30c8
movq %r12, %rdi
leaq 0x1840(%rip), %rsi      # 0x41b8
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x3111
movq %r12, %rdi
leaq 0x1837(%rip), %rsi      # 0x41c9
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x315a
movq %r12, %rdi
leaq 0x1822(%rip), %rsi      # 0x41ce
xorl %edx, %edx
callq 0x2220
leaq -0x300(%rbp), %rdi
leaq 0x1812(%rip), %rsi      # 0x41d3
testq %rax, %rax
je 0x2f31
movq %r12, %rdi
leaq 0x1807(%rip), %rsi      # 0x41db
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x31a3
movq %r12, %rdi
leaq 0x17fa(%rip), %rsi      # 0x41e8
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x31ec
movq %r12, %rdi
leaq 0x17e9(%rip), %rsi      # 0x41f1
xorl %edx, %edx
callq 0x2220
leaq -0x300(%rbp), %rdi
leaq 0x166f(%rip), %rsi      # 0x408c
testq %rax, %rax
je 0x2f31
movq %r12, %rdi
leaq 0x17c5(%rip), %rsi      # 0x41f5
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x3235
movq %r12, %rdi
leaq 0x17cf(%rip), %rsi      # 0x4219
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x32df
movq %r12, %rdi
leaq 0x17c4(%rip), %rsi      # 0x4228
xorl %edx, %edx
callq 0x2220
testq %rax, %rax
je 0x3321
movq 0x3555(%rip), %rdi      # 0x5fd0
leaq 0x17b7(%rip), %rsi      # 0x4239
callq 0x2140
movq %rax, %rdi
movl -0x48(%rbp), %esi
callq 0x2230
movq %rax, %rdi
leaq 0x1607(%rip), %rsi      # 0x40a3
callq 0x2140
movq %rax, %rdi
movq %r12, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x15ed(%rip), %rsi      # 0x40a3
callq 0x2140
xorl %ebx, %ebx
jmp 0x2d7f
leaq -0x300(%rbp), %rdi
leaq 0x15b1(%rip), %rsi      # 0x4081
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x5
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x1588(%rip), %rsi      # 0x4089
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x1568(%rip), %rsi      # 0x4081
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x4
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x154d(%rip), %rsi      # 0x4097
callq 0x2140
jmp 0x2d72
cmpq $0x3, -0xf8(%rbp)
leaq -0x300(%rbp), %rdi
leaq 0x1537(%rip), %rsi      # 0x40a1
jb 0x2f31
leaq 0x1527(%rip), %rsi      # 0x409e
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x14fb(%rip), %rsi      # 0x40a3
callq 0x2140
jmp 0x2d72
movq %r15, %rbx
movq %r15, %rdi
leaq 0x151b(%rip), %r13      # 0x40da
movq %r13, %rsi
leaq -0x41(%rbp), %rdx
callq 0x3570
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0x1596(%rip), %rsi      # 0x4170
callq 0x35ab
movq %r13, %rsi
testb %al, %al
jne 0x2c43
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0x1587(%rip), %rsi      # 0x417c
callq 0x35ab
leaq 0x14dc(%rip), %rsi      # 0x40dd
testb %al, %al
jne 0x2c43
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0x1572(%rip), %rsi      # 0x4186
callq 0x35ab
leaq 0x14bd(%rip), %rsi      # 0x40dd
testb %al, %al
jne 0x2c43
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0x1561(%rip), %rsi      # 0x4194
callq 0x35ab
leaq 0x149e(%rip), %rsi      # 0x40dd
testb %al, %al
je 0x2c4b
movq %rbx, %rdi
callq 0x2270
leaq -0x300(%rbp), %rdi
leaq 0x1487(%rip), %rsi      # 0x40e0
callq 0x2140
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x1476(%rip), %rsi      # 0x40e9
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1405(%rip), %rsi      # 0x4097
callq 0x2140
movq %rbx, %rdi
jmp 0x2d75
leaq -0x300(%rbp), %rdi
leaq 0x1447(%rip), %rsi      # 0x40f4
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x8
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x13b9(%rip), %rsi      # 0x4097
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x1414(%rip), %rsi      # 0x410a
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x8
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x1370(%rip), %rsi      # 0x4097
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x13e6(%rip), %rsi      # 0x4122
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x9
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x132a(%rip), %rsi      # 0x4097
callq 0x2140
movq %r13, %rdi
callq 0x20b0
incl -0x48(%rbp)
movb $0x1, %bl
leaq -0x40(%rbp), %rdi
callq 0x3544
movq %r12, %rdi
callq 0x20b0
addq $0x20, %r14
testb %bl, %bl
jne 0x26ef
jmp 0x336c
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1458(%rip), %rsi      # 0x4217
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x135b(%rip), %rsi      # 0x4139
jmp 0x2f31
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1416(%rip), %rsi      # 0x4217
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1327(%rip), %rsi      # 0x4147
jmp 0x2f31
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x13d4(%rip), %rsi      # 0x4217
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1288(%rip), %rsi      # 0x40ea
jmp 0x2f31
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1392(%rip), %rsi      # 0x4217
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x11d4(%rip), %rsi      # 0x4078
jmp 0x2f31
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1281(%rip), %rsi      # 0x4148
callq 0x2140
movq %rax, %r13
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rcx
movq 0x28(%rax), %rax
leaq (%rcx,%rax), %rdx
addq $0x2, %rdx
movq %r15, %rbx
movq %r15, %rdi
movq %r12, %rsi
pushq $-0x1
popq %rcx
callq 0x2170
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x118e(%rip), %rsi      # 0x4097
callq 0x2140
jmp 0x2c97
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1239(%rip), %rsi      # 0x416a
callq 0x2140
jmp 0x2d7a
leaq -0x300(%rbp), %rdi
leaq 0x122b(%rip), %rsi      # 0x4174
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x5
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x111e(%rip), %rsi      # 0x4098
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x11ee(%rip), %rsi      # 0x4180
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x5
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x10d5(%rip), %rsi      # 0x4098
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x11b1(%rip), %rsi      # 0x418c
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x7
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x108c(%rip), %rsi      # 0x4098
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x1177(%rip), %rsi      # 0x419b
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x8
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0x1043(%rip), %rsi      # 0x4098
callq 0x2140
jmp 0x2d72
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
movq %rax, %rdi
leaq 0x1130(%rip), %rsi      # 0x41ad
callq 0x2140
movq %rax, %r13
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rcx
movq 0x28(%rax), %rax
leaq (%rcx,%rax), %rdx
incq %rdx
movq %r15, %rbx
movq %r15, %rdi
movq %r12, %rsi
pushq $-0x1
popq %rcx
callq 0x2170
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0xfda(%rip), %rsi       # 0x4098
callq 0x2140
jmp 0x2c97
leaq -0x300(%rbp), %rdi
leaq 0x10ef(%rip), %rsi      # 0x41c5
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x3
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0xf71(%rip), %rsi       # 0x4078
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x10a1(%rip), %rsi      # 0x41c0
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x8
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0xf28(%rip), %rsi       # 0x4078
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x1058(%rip), %rsi      # 0x41c0
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x5
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0xedf(%rip), %rsi       # 0x4078
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0x1030(%rip), %rsi      # 0x41e1
callq 0x2140
movq %rax, %rbx
movq %r15, %r13
movq %r15, %rdi
movq %r12, %rsi
pushq $0x6
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0xe96(%rip), %rsi       # 0x4078
callq 0x2140
jmp 0x2d72
leaq -0x300(%rbp), %rdi
leaq 0xff2(%rip), %rsi       # 0x41ec
callq 0x2140
movq %rax, %rbx
movq %r15, %rdi
movq %r12, %rsi
pushq $0x4
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2170
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2130
movq %rax, %rdi
leaq 0xe50(%rip), %rsi       # 0x4078
callq 0x2140
movq %r15, %rdi
jmp 0x2d75
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0xf2c(%rip), %rsi       # 0x4170
callq 0x35ab
movl %eax, %ecx
leaq -0x300(%rbp), %rax
leaq 0xfa6(%rip), %rsi       # 0x41ff
testb %cl, %cl
jne 0x32fa
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0xf16(%rip), %rsi       # 0x4186
callq 0x35ab
movl %eax, %ecx
leaq -0x300(%rbp), %rax
leaq 0xf82(%rip), %rsi       # 0x4207
testb %cl, %cl
jne 0x32fa
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0xefc(%rip), %rsi       # 0x4194
callq 0x35ab
movl %eax, %ecx
leaq -0x300(%rbp), %rax
leaq 0xf62(%rip), %rsi       # 0x420f
testb %cl, %cl
jne 0x32fa
movq -0x40(%rbp), %rdi
addq $0x20, %rdi
leaq 0xebc(%rip), %rsi       # 0x417c
callq 0x35ab
movl %eax, %ecx
leaq -0x300(%rbp), %rax
leaq 0xeab(%rip), %rsi       # 0x4180
testb %cl, %cl
je 0x2d7a
jmp 0x32fa
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0x300(%rbp), %rdi
callq 0x2130
leaq 0xf1d(%rip), %rsi       # 0x4217
movq %rax, %rdi
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x40, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0xd7c(%rip), %rsi       # 0x4098
jmp 0x2f31
leaq -0x300(%rbp), %rdi
leaq 0xf07(%rip), %rsi       # 0x4236
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x2130
movq %rax, %rdi
leaq 0xd4a(%rip), %rsi       # 0x4098
callq 0x2140
movq -0x40(%rbp), %rsi
addq $0x20, %rsi
leaq -0xa0(%rbp), %rdi
callq 0x3508
jmp 0x2d7a
leaq 0xed1(%rip), %rsi       # 0x4244
leaq -0x300(%rbp), %rdi
callq 0x2140
leaq -0x300(%rbp), %rdi
callq 0x21b0
leaq -0x300(%rbp), %rdi
callq 0x21d0
leaq -0xa0(%rbp), %rdi
callq 0x3544
leaq -0x548(%rbp), %rdi
callq 0x2050
leaq -0xe0(%rbp), %rdi
callq 0x20b0
leaq -0x80(%rbp), %rdi
callq 0x3544
leaq -0xc0(%rbp), %rdi
callq 0x20b0
xorl %eax, %eax
addq $0x528, %rsp            # imm = 0x528
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x3474
jmp 0x349d
jmp 0x34c3
jmp 0x34c3
movq %rax, %rbx
jmp 0x34de
jmp 0x3474
jmp 0x349d
jmp 0x3482
jmp 0x3474
jmp 0x3482
jmp 0x349d
movq %rax, %rbx
jmp 0x34f3
jmp 0x3474
jmp 0x349d
jmp 0x3474
movq %rax, %rbx
leaq -0x340(%rbp), %rdi
callq 0x20b0
jmp 0x34c6
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x20b0
jmp 0x34a0
movq %rax, %rbx
jmp 0x34b5
movq %rax, %rbx
jmp 0x34a9
movq %rax, %rbx
leaq -0x320(%rbp), %rdi
callq 0x20b0
jmp 0x34a9
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x3544
leaq -0x100(%rbp), %rdi
callq 0x20b0
leaq -0x300(%rbp), %rdi
callq 0x21d0
jmp 0x34c6
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x3544
leaq -0x548(%rbp), %rdi
callq 0x2050
leaq -0xe0(%rbp), %rdi
callq 0x20b0
leaq -0x80(%rbp), %rdi
callq 0x3544
leaq -0xc0(%rbp), %rdi
callq 0x20b0
movq %rbx, %rdi
callq 0x2240
nop