// File: /workspace/github_cpp_makefile_star2_O3/martinda3[P]Compiler/src/tc.cpp
// Function: processCommandLine(int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void processCommandLine(int argc, char *argv[], string filename) {
    string toycFile, outputFileName, javaClass;

    try {
        toycFile = argv[2];

        /* Verify we are using the correct file type*/
        std::size_t found = toycFile.find(".tc");
        if (found == std::string::npos) {
            cerr << "ERROR: Invalid File Type: filename\"" << toycFile
                      << "\""<< endl;
            exit(EXIT_FAILURE);
        }

        /* Generate Output path + file */
        outputFileName = toycFile.substr(0, found + 1) + "j";

        /* Generate Class file */
        /* Check if file is local */
        found = toycFile.find_last_of("/");
        if (found != std::string::npos) {
            /* Path + File */
            javaClass = toycFile.substr(found + 1, (toycFile.find(".tc") - found) - 1);
        } else {
            /* Local File */
            javaClass = toycFile.substr(0, toycFile.find(".tc"));
        }
        cout << "Class: " << javaClass << endl;

        outputClassFileName = javaClass;
    }
    catch (...) {}
    switch (argc) {
        case 1:
            printUsageMessage();
            break;
        case 3:
            inputFileName = argv[2];
            targetFileName = outputFileName;
            if (argv[1][0] == '-' && argv[1][1] == 's') {
                turnVerboseOn();
                turnScannerOn();
                if (argv[1][2] == '0') // add more robust debugging
                {
                    turnVerboseOff();
                    turnScannerOff();
                    turnScannerOff();
                    turnCodeGenOff();
                }
                TCfile *test1;
                test1 = new TCfile(inputFileName, targetFileName, inputFileHandler(inputFileName));
                cout << test1->getFileInfo();
                TClexer *scanner = new TClexer(inputFileName);
                int tok;
                while ((tok = scanner->getToken()->getTokenType()) != EOFILE);
            } else if (argv[1][0] == '-' && argv[1][1] == 'c') {
                turnVerboseOn();
                turnParserOn();
                turnScannerOn();
                turnCodeGenOn();
                if (argv[1][2] == '0') {
                    turnVerboseOff();
                    turnScannerOff();
                    turnScannerOff();
                    turnCodeGenOff();
                }
                TClexer *scanner;
                TCparser *parser;
                ASabstractSyntax *ast;
                CGcodeGenerator *cg;
                CGtargetCode *tc;
                TCfile *test1;
                test1 = new TCfile(inputFileName, targetFileName, inputFileHandler(inputFileName));
                cout << test1->getFileInfo();
                try { scanner = new TClexer(inputFileName); }
                catch (...) {
                    cerr << "ERROR: TClexer" << endl;
                    exit(EXIT_FAILURE);
                }

                try { parser = new TCparser(scanner); }
                catch (...) {
                    cerr << "ERROR: TCparser" << endl;
                    exit(EXIT_FAILURE);
                }

                try { ast = parser->parse(); }
                catch (...) {
                    cerr << "ERROR: ASabstractSyntax" << endl;
                    exit(EXIT_FAILURE);
                }

                try { cg = new JVMcodeGenerator(); }
                catch (...) {
                    cerr << "ERROR: CGcodeGenerator" << endl;
                    exit(EXIT_FAILURE);
                }

                try { tc = cg->generateCode(ast); }
                catch (...) {
                    cerr << "ERROR: CGtargetCode" << endl;
                    exit(EXIT_FAILURE);
                }

                try { tc->writeCode(tc, targetFileName); }
                catch (...) {
                    cerr << "ERROR: writeCode" << endl;
                    exit(EXIT_FAILURE);
                }

                if (v_code_gen) {
                    dumpAST(ast);
                    dumpST(symTable);
                    dumpCode(tc);
                }
            } else if (argv[1][0] == '-' && argv[1][1] == 'p') {
                turnVerboseOn();
                turnParserOn();
                turnScannerOn();
                if (argv[1][2] == '0') {
                    turnVerboseOff();
                    turnScannerOff();
                    turnScannerOff();
                    turnCodeGenOff();
                }
                TCfile *test1;
                test1 = new TCfile(inputFileName, targetFileName, inputFileHandler(inputFileName));
                cout << test1->getFileInfo();
                TClexer *scanner;
                try { scanner = new TClexer(inputFileName); }
                catch (...) {
                    cerr << "ERROR: TClexer" << endl;
                    exit(EXIT_FAILURE);
                }
                int tok;
                while ((tok = scanner->getToken()->getTokenType()) != EOFILE);
            } else if (argv[1][0] == '-' && argv[1][1] == 'a') {
                turnVerboseOn();
               // turnParserOn();
                //turnScannerOn();
                turnCodeGenOn();
                if (argv[1][2] == '0') {
                    turnVerboseOff();
                    turnScannerOff();
                    turnScannerOff();
                    turnCodeGenOff();
                }
                TCfile *test1;
                test1 = new TCfile(inputFileName, targetFileName, inputFileHandler(inputFileName));
                cout << test1->getFileInfo();
                TClexer *scanner;
                TCparser *parser;
                ASabstractSyntax *ast;
                try { scanner = new TClexer(inputFileName); }
                catch (...) {
                    cerr << "ERROR: TClexer" << endl;
                    exit(EXIT_FAILURE);
                }

                try { parser = new TCparser(scanner); }
                catch (...) {
                    cerr << "ERROR: TCparser" << endl;
                    exit(EXIT_FAILURE);
                }

                try { ast = parser->parse(); }
                catch (...) {
                    cerr << "ERROR: ASabstractSyntax" << endl;
                    exit(EXIT_FAILURE);
                }

                if (v_code_gen) {
                    dumpAST(ast);
                    dumpST(symTable);
                }
            } else {
                cout << inputFileHandler(inputFileName);
            }
            break;
        default:
            printUsageMessage();
            break;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2e8, %rsp            # imm = 0x2E8
movq %rsi, 0x40(%rsp)
movl %edi, %ebx
leaq 0x30(%rsp), %r13
movq %r13, -0x10(%r13)
xorl %eax, %eax
movq %rax, -0x8(%r13)
movb %al, (%r13)
leaq 0x78(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x58(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq 0x10(%rsi), %r14
movq %r14, %rdi
callq 0x8100
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r14, %rcx
movq %rax, %r8
callq 0x8390
leaq 0x4dac(%rip), %rsi      # 0x2bc61
leaq 0x20(%rsp), %rdi
movl $0x3, %ecx
xorl %edx, %edx
callq 0x8410
cmpq $-0x1, %rax
je 0x27a69
incq %rax
leaq 0x2c8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x8280
leaq 0x4d98(%rip), %rsi      # 0x2bc89
leaq 0x2c8(%rsp), %rdi
callq 0x8460
leaq 0x10(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x26f24
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x26f2b
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rsp, %r14
movq %rdx, 0x8(%r14)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x68(%rsp), %rdi
movq %r14, %rsi
callq 0x82f0
movq (%r14), %rdi
cmpq %rbp, %rdi
je 0x26f67
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8260
leaq 0x2d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x26f88
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x8260
leaq 0x3782(%rip), %rsi      # 0x2a711
leaq 0x20(%rsp), %rdi
movl $0x1, %ecx
movq $-0x1, %rdx
callq 0x8470
cmpq $-0x1, %rax
je 0x27398
movq %rax, %r14
movl %ebx, %r15d
movq %r13, %rbx
leaq 0x1(%rax), %r12
leaq 0x4c9e(%rip), %rsi      # 0x2bc61
leaq 0x20(%rsp), %r13
movl $0x3, %ecx
movq %r13, %rdi
xorl %edx, %edx
callq 0x8410
notq %r14
addq %rax, %r14
movq %rsp, %rdi
movq %r13, %rsi
movq %r12, %rdx
movq %r14, %rcx
callq 0x8280
leaq 0x48(%rsp), %rdi
movq %rsp, %r14
movq %r14, %rsi
callq 0x82f0
movq (%r14), %rdi
cmpq %rbp, %rdi
movq %rbx, %r13
movl %r15d, %ebx
je 0x27019
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x40(%rsp), %r15
movq 0x12fab(%rip), %rdi     # 0x39fd0
leaq 0x4c5f(%rip), %rsi      # 0x2bc8b
movl $0x7, %edx
callq 0x82c0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x12f89(%rip), %rdi     # 0x39fd0
callq 0x82c0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8230
movsbl %al, %esi
movq %r14, %rdi
callq 0x8030
movq %rax, %rdi
callq 0x8170
leaq 0x13493(%rip), %rdi     # 0x3a510
leaq 0x48(%rsp), %rsi
callq 0x8150
cmpl $0x3, %ebx
jne 0x2738e
movq 0x10(%r15), %r14
leaq 0x13455(%rip), %rbx     # 0x3a4f0
movq 0x8(%rbx), %r12
movq %r14, %rdi
callq 0x8100
movq %rbx, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r14, %rcx
movq %rax, %r8
callq 0x8390
leaq 0x1346f(%rip), %r14     # 0x3a530
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x8150
movq 0x8(%r15), %rax
cmpb $0x2d, (%rax)
jne 0x275ca
movzbl 0x1(%rax), %eax
cmpl $0x6f, %eax
jg 0x273e4
cmpl $0x61, %eax
je 0x2762e
cmpl $0x63, %eax
jne 0x275ca
callq 0x1aa70
callq 0x1aa90
callq 0x1aa80
callq 0x1aaa0
movq 0x8(%r15), %rax
cmpb $0x30, 0x2(%rax)
jne 0x2712c
callq 0x1aa78
callq 0x1aa88
callq 0x1aa88
callq 0x1aaa8
movl $0x48, %edi
callq 0x8250
movq %rax, %r15
leaq 0x238(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0xabdc
leaq 0x218(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0xabdc
leaq 0x1f8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x1e8(%rsp), %rdi
callq 0xabdc
leaq 0x1e8(%rsp), %rdi
callq 0x2829c
leaq 0x228(%rsp), %rsi
leaq 0x208(%rsp), %rdx
movq %r15, %rdi
movl %eax, %ecx
callq 0x1934e
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x271e7
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x208(%rsp), %rdi
cmpq %r13, %rdi
je 0x27204
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x30(%rsp), %r13
je 0x27226
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x8260
movq %rsp, %rdi
movq %r15, %rsi
callq 0x193d2
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x12d8f(%rip), %rdi     # 0x39fd0
callq 0x82c0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27261
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x1, %edi
callq 0x8250
movq %rax, %r15
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x1c8(%rsp), %rdi
callq 0xabdc
leaq 0x1c8(%rsp), %rsi
movq %r15, %rdi
callq 0x10914
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x272bf
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x10, %edi
callq 0x8250
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
callq 0xb8f4
movq %rbx, %rdi
callq 0xb8f8
movq %rax, %rbx
movl $0x10, %edi
callq 0x8250
movq %rax, %r15
movq %rax, %rdi
callq 0x1c534
movq (%r15), %rax
movq %r15, %rdi
movq %rbx, %rsi
callq *(%rax)
movq %rax, %r15
leaq 0x1b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %rdi
callq 0xabdc
movq (%r15), %rax
leaq 0x1a8(%rsp), %rdx
movq %r15, %rdi
movq %r15, %rsi
callq *0x20(%rax)
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2735a
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x8260
leaq 0x1327a(%rip), %rax     # 0x3a5db
cmpb $0x0, (%rax)
je 0x27a08
movq %rbx, %rdi
callq 0x17c05
leaq 0x131f7(%rip), %rax     # 0x3a570
movq (%rax), %rdi
callq 0x17cd4
movq %r15, %rdi
callq 0x17db7
jmp 0x27a08
callq 0x2816c
jmp 0x27a08
leaq 0x48c2(%rip), %rsi      # 0x2bc61
leaq 0x20(%rsp), %r14
movl $0x3, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x8410
movq %rsp, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x8280
leaq 0x48(%rsp), %rdi
movq %rsp, %r14
movq %r14, %rsi
callq 0x82f0
movq (%r14), %rdi
cmpq %rbp, %rdi
jne 0x2700c
jmp 0x27019
cmpl $0x70, %eax
je 0x27834
cmpl $0x73, %eax
jne 0x275ca
callq 0x1aa70
callq 0x1aa80
movq 0x8(%r15), %rax
cmpb $0x30, 0x2(%rax)
jne 0x2741e
callq 0x1aa78
callq 0x1aa88
callq 0x1aa88
callq 0x1aaa8
movl $0x48, %edi
callq 0x8250
movq %rax, %r15
leaq 0x2b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x2a8(%rsp), %rdi
callq 0xabdc
leaq 0x298(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0xabdc
leaq 0x278(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x268(%rsp), %rdi
callq 0xabdc
leaq 0x268(%rsp), %rdi
callq 0x2829c
leaq 0x2a8(%rsp), %rsi
leaq 0x288(%rsp), %rdx
movq %r15, %rdi
movl %eax, %ecx
callq 0x1934e
movq 0x268(%rsp), %rdi
cmpq %r14, %rdi
je 0x274d9
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x288(%rsp), %rdi
cmpq %r13, %rdi
je 0x274f6
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x2a8(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x30(%rsp), %r13
je 0x27518
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x8260
movq %rsp, %rdi
movq %r15, %rsi
callq 0x193d2
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x12a9d(%rip), %rdi     # 0x39fd0
callq 0x82c0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27553
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x1, %edi
callq 0x8250
movq %rax, %r14
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x248(%rsp), %rdi
callq 0xabdc
leaq 0x248(%rsp), %rsi
movq %r14, %rdi
callq 0x10914
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x275b0
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x8260
movq %r14, %rdi
callq 0x10f1e
movq %rax, %rdi
callq 0x17fcc
cmpl $0x2d, %eax
jne 0x275b0
jmp 0x27a08
leaq 0x98(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x88(%rsp), %rdi
callq 0xabdc
leaq 0x88(%rsp), %rdi
callq 0x2829c
movq 0x129cf(%rip), %rdi     # 0x39fd0
movl %eax, %esi
callq 0x8400
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x27a08
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x27a08
callq 0x1aa70
callq 0x1aaa0
movq 0x8(%r15), %rax
cmpb $0x30, 0x2(%rax)
jne 0x27656
callq 0x1aa78
callq 0x1aa88
callq 0x1aa88
callq 0x1aaa8
movl $0x48, %edi
callq 0x8250
movq %rax, %r15
leaq 0x118(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x108(%rsp), %rdi
callq 0xabdc
leaq 0xf8(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0xabdc
leaq 0xd8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %rdi
callq 0xabdc
leaq 0xc8(%rsp), %rdi
callq 0x2829c
leaq 0x108(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
movq %r15, %rdi
movl %eax, %ecx
callq 0x1934e
movq 0xc8(%rsp), %rdi
cmpq %r14, %rdi
je 0x27711
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0xe8(%rsp), %rdi
cmpq %r13, %rdi
je 0x2772e
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x30(%rsp), %r13
je 0x27750
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x8260
movq %rsp, %rdi
movq %r15, %rsi
callq 0x193d2
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x12865(%rip), %rdi     # 0x39fd0
callq 0x82c0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2778b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x1, %edi
callq 0x8250
movq %rax, %r14
leaq 0xb8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0xabdc
leaq 0xa8(%rsp), %rsi
movq %r14, %rdi
callq 0x10914
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
je 0x277e8
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x10, %edi
callq 0x8250
movq %rax, %rbx
movq %rax, %rdi
movq %r14, %rsi
callq 0xb8f4
movq %rbx, %rdi
callq 0xb8f8
leaq 0x12dcc(%rip), %rcx     # 0x3a5db
cmpb $0x0, (%rcx)
je 0x27a08
movq %rax, %rdi
callq 0x17c05
leaq 0x12d49(%rip), %rax     # 0x3a570
movq (%rax), %rdi
callq 0x17cd4
jmp 0x27a08
callq 0x1aa70
callq 0x1aa90
callq 0x1aa80
movq 0x8(%r15), %rax
cmpb $0x30, 0x2(%rax)
jne 0x27861
callq 0x1aa78
callq 0x1aa88
callq 0x1aa88
callq 0x1aaa8
movl $0x48, %edi
callq 0x8250
movq %rax, %r15
leaq 0x198(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xabdc
leaq 0x178(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x168(%rsp), %rdi
callq 0xabdc
leaq 0x158(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x148(%rsp), %rdi
callq 0xabdc
leaq 0x148(%rsp), %rdi
callq 0x2829c
leaq 0x188(%rsp), %rsi
leaq 0x168(%rsp), %rdx
movq %r15, %rdi
movl %eax, %ecx
callq 0x1934e
movq 0x148(%rsp), %rdi
cmpq %r14, %rdi
je 0x2791c
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x168(%rsp), %rdi
cmpq %r13, %rdi
je 0x27939
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x30(%rsp), %r13
je 0x2795b
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x8260
movq %rsp, %rdi
movq %r15, %rsi
callq 0x193d2
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x1265a(%rip), %rdi     # 0x39fd0
callq 0x82c0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x27996
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x1, %edi
callq 0x8250
movq %rax, %r14
leaq 0x138(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x128(%rsp), %rdi
callq 0xabdc
leaq 0x128(%rsp), %rsi
movq %r14, %rdi
callq 0x10914
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x279f3
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x8260
movq %r14, %rdi
callq 0x10f1e
movq %rax, %rdi
callq 0x17fcc
cmpl $0x2d, %eax
jne 0x279f3
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x27a24
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x27a40
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x27a57
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8260
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x12580(%rip), %rdi     # 0x39ff0
leaq 0x41ee(%rip), %rsi      # 0x2bc65
movl $0x23, %edx
callq 0x82c0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x1255e(%rip), %rdi     # 0x39ff0
callq 0x82c0
movq %rax, %r14
leaq 0x2c33(%rip), %rsi      # 0x2a6d4
movl $0x1, %edx
movq %rax, %rdi
callq 0x82c0
movq %r14, %rdi
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x27ae0
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x27ae0
movq %rax, %rbx
movq %rbx, %rdi
callq 0x80e0
movq 0x12501(%rip), %rdi     # 0x39ff0
leaq 0x41ff(%rip), %rsi      # 0x2bcf5
movl $0x10, %edx
callq 0x82c0
movq 0x124e9(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rdi
callq 0x80e0
movq 0x124d0(%rip), %rdi     # 0x39ff0
leaq 0x41ba(%rip), %rsi      # 0x2bce1
movl $0x13, %edx
callq 0x82c0
movq 0x124b8(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
movl $0x10, %esi
movq %r15, %rdi
callq 0x8260
jmp 0x27b64
movq %rax, %rbx
movq %rbx, %rdi
callq 0x80e0
movq 0x1247d(%rip), %rdi     # 0x39ff0
leaq 0x4150(%rip), %rsi      # 0x2bcca
movl $0x16, %edx
callq 0x82c0
movq 0x12465(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rdi
callq 0x80e0
movq 0x1244c(%rip), %rdi     # 0x39ff0
leaq 0x4107(%rip), %rsi      # 0x2bcb2
movl $0x17, %edx
callq 0x82c0
movq 0x12434(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
jmp 0x2810d
movq %rax, %r14
movl $0x10, %esi
movq %rbx, %rdi
callq 0x8260
jmp 0x27c2b
movq %rax, %rdi
callq 0x80e0
movq 0x123f7(%rip), %rdi     # 0x39ff0
leaq 0x40b2(%rip), %rsi      # 0x2bcb2
movl $0x17, %edx
callq 0x82c0
movq 0x123df(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %r14
movq %r14, %rdi
callq 0x80e0
movq 0x123b6(%rip), %rdi     # 0x39ff0
leaq 0x4061(%rip), %rsi      # 0x2bca2
movl $0xf, %edx
callq 0x82c0
movq 0x1239e(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %r14
movl $0x10, %esi
movq %rbx, %rdi
callq 0x8260
jmp 0x27cb5
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x27ce9
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x27ce9
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0x27cfb
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x27cfb
movq %rax, %r14
movq %r14, %rdi
callq 0x80e0
movq 0x1232c(%rip), %rdi     # 0x39ff0
leaq 0x3fd7(%rip), %rsi      # 0x2bca2
movl $0xf, %edx
callq 0x82c0
movq 0x12314(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
movl $0x1, %esi
movq %r15, %rdi
callq 0x8260
jmp 0x27d5f
movq %rax, %rbx
movl $0x1, %esi
movq %r14, %rdi
callq 0x8260
jmp 0x27d93
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
je 0x27dc4
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x27dc4
movq %rax, %rbx
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x27dd6
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x27dd6
movq %rax, %rbx
movq %rbx, %rdi
callq 0x80e0
movq 0x12282(%rip), %rdi     # 0x39ff0
leaq 0x3f1e(%rip), %rsi      # 0x2bc93
movl $0xe, %edx
callq 0x82c0
movq 0x1226a(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
movq %rbx, %rdi
callq 0x80e0
movq 0x1224e(%rip), %rdi     # 0x39ff0
leaq 0x3eea(%rip), %rsi      # 0x2bc93
movl $0xe, %edx
callq 0x82c0
movq 0x12236(%rip), %rdi     # 0x39ff0
callq 0x8120
jmp 0x27e16
movq %rax, %rbx
movl $0x1, %esi
movq %r14, %rdi
callq 0x8260
jmp 0x27dea
movq %rax, %rbx
movl $0x1, %esi
movq %r14, %rdi
jmp 0x280aa
jmp 0x27e31
jmp 0x27e31
movq %rax, %rbx
movq %rbx, %rdi
callq 0x80e0
movq 0x121f7(%rip), %rdi     # 0x39ff0
leaq 0x3e93(%rip), %rsi      # 0x2bc93
movl $0xe, %edx
callq 0x82c0
movq 0x121df(%rip), %rdi     # 0x39ff0
callq 0x8120
movl $0x1, %edi
callq 0x82e0
jmp 0x2810d
jmp 0x2810d
jmp 0x2810d
jmp 0x27e31
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x28110
movq 0x10(%rsp), %rsi
jmp 0x280a7
jmp 0x2810d
jmp 0x2810d
movq %rax, %rbx
jmp 0x27f0b
movq %rax, %rbx
jmp 0x27f66
movq %rax, %rbx
jmp 0x27f28
movq %rax, %rbx
jmp 0x27f83
movq %rax, %rbx
jmp 0x27fc1
movq %rax, %rbx
jmp 0x28015
jmp 0x27ea5
jmp 0x27ea5
movq %rax, %rbx
jmp 0x27fde
movq %rax, %rbx
jmp 0x28032
jmp 0x2810d
jmp 0x27ea5
movq %rax, %rbx
jmp 0x2804f
jmp 0x2810d
jmp 0x2810d
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x27f0b
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x208(%rsp), %rdi
cmpq %r13, %rdi
je 0x27f28
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x2804f
movq 0x238(%rsp), %rsi
jmp 0x28047
movq %rax, %rbx
movq 0x148(%rsp), %rdi
cmpq %r14, %rdi
je 0x27f66
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x168(%rsp), %rdi
cmpq %r13, %rdi
je 0x27f83
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x2804f
movq 0x198(%rsp), %rsi
jmp 0x28047
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %r14, %rdi
je 0x27fc1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0xe8(%rsp), %rdi
cmpq %r13, %rdi
je 0x27fde
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x108(%rsp), %rdi
cmpq %r12, %rdi
je 0x2804f
movq 0x118(%rsp), %rsi
jmp 0x28047
movq %rax, %rbx
movq 0x268(%rsp), %rdi
cmpq %r14, %rdi
je 0x28015
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x288(%rsp), %rdi
cmpq %r13, %rdi
je 0x28032
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x2a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2804f
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x8260
movl $0x48, %esi
movq %r15, %rdi
jmp 0x280aa
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
movq %rax, %rbx
callq 0x83d0
jmp 0x28110
jmp 0x2810d
movq %rax, %rdi
callq 0x28556
jmp 0x280e7
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x28110
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x28110
jmp 0x280ed
movl %ebx, %r15d
movq %r13, %rbx
movq %rax, %r14
leaq 0x2d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x280f0
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x8260
jmp 0x280f0
jmp 0x280e7
jmp 0x280e7
jmp 0x2810d
jmp 0x2810d
movl %ebx, %r15d
movq %r13, %rbx
movq %rax, %r14
movq %r14, %rdi
callq 0x80e0
movq %rbx, %r13
callq 0x83d0
movl %r15d, %ebx
movq 0x40(%rsp), %r15
jmp 0x27087
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x2812c
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x28148
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x8260
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x28164
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x8260
movq %rbx, %rdi
callq 0x8420