// File: DuoLife-QNL[P]lexical_analysis/main.cpp
// Function: main
int main(int a, char** b){
    argc = a;
    argv = b;
    keyword k;
    operators o;
    delimiter de;
    strings s;
    characters c;
    error e;
    id i;

    if (argc > 1){
        if(!(yyin = fopen(argv[1], "r"))){
            perror(argv[1]);
            return 1;
        }
        if (argc == 2){
            cout << left << setw(30) << "TOKEN_TYPE" << left << setw(30) << "CONTENT" << endl << endl;
        }else if (argc ==3){
            outfile.open(argv[2]);
            outfile << left << setw(30) << "TOKEN_TYPE" << left << setw(30) << "CONTENT" << endl << endl;
        }
    }else{
        cout << "Please input the token" << endl;        
    }

    int d = yylex();
    while(d){
        if (d == KEYWORD){
            k.detected(yytext);
            ch_cnt += yyleng;
        }else if(d == RELOP){
            o.detected(yytext);
            ch_cnt += yyleng;
        }else if(d == DELIMITER){
            de.detected(yytext);
            ch_cnt += yyleng;
        }else if (d == IDENTIFIER){
            ch_cnt += yyleng;
        }else if(d == STRINGS){
            s.display(yytext);
            ch_cnt += yyleng;
        }else if (d == CHARACTERS){
            c.display(yytext);
            ch_cnt += yyleng;
        }else if(d == NUM){
            ch_cnt += yyleng;
        }else if(d == ERROR){
            e.display(yytext, yylineno);
        }
        else{
            ;
        }
        d = yylex();
    }

    if(argc == 2){
        cout << endl << endl << "STATISTICS" << endl << endl;

        cout << left << setw(30) << "ITEM" << left << setw(30) << "COUNT" << endl;
        cout << left << setw(30) << "Identifier" << left << setw(30) << id::id_cnt << endl;
        cout << left << setw(30) << "Number" << left << setw(30) << num::num_cnt << endl;
        cout << left << setw(30) << "Operator" << left << setw(30) << operators::opr_cnt << endl;
        cout << left << setw(30) << "Delimiter" << left << setw(30) << delimiter::dlmt_cnt << endl;
        cout << left << setw(30) << "Keyword" << left << setw(30) << keyword::kw_cnt << endl;
        cout << left << setw(30) << "Line" << left << setw(30) << line::count << endl;
        cout << left << setw(30) << "Total character number" << left << setw(30) << ch_cnt << endl;
    }else if(argc == 3){
        outfile << endl << endl << "STATISTICS" << endl << endl;

        outfile << left << setw(30) << "ITEM" << left << setw(30) << "COUNT" << endl;
        outfile << left << setw(30) << "Identifier" << left << setw(30) << id::id_cnt << endl;
        outfile << left << setw(30) << "Number" << left << setw(30) << num::num_cnt << endl;
        outfile << left << setw(30) << "Operator" << left << setw(30) << operators::opr_cnt << endl;
        outfile << left << setw(30) << "Delimiter" << left << setw(30) << delimiter::dlmt_cnt << endl;
        outfile << left << setw(30) << "Keyword" << left << setw(30) << keyword::kw_cnt << endl;
        outfile << left << setw(30) << "Line" << left << setw(30) << line::count << endl;
        outfile << left << setw(30) << "Total character number" << left << setw(30) << ch_cnt << endl;  

    }
    i.disp_tbl();

    outfile.close();
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x8(%rbp), %eax
movl %eax, 0xbbf2(%rip)      # 0xe234
movq -0x10(%rbp), %rax
movq %rax, 0xbbeb(%rip)      # 0xe238
cmpl $0x1, 0xbbe0(%rip)      # 0xe234
jle 0x2824
movq 0xbbd7(%rip), %rax      # 0xe238
movq 0x8(%rax), %rdi
leaq 0x8353(%rip), %rsi      # 0xa9bf
callq 0x2290
leaq 0xbdd8(%rip), %rcx      # 0xe450
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x269d
movq 0xbbb0(%rip), %rax      # 0xe238
movq 0x8(%rax), %rdi
callq 0x2190
movl $0x1, -0x4(%rbp)
jmp 0x3455
cmpl $0x2, 0xbb90(%rip)      # 0xe234
jne 0x2753
movq 0xb917(%rip), %rdi      # 0xdfc8
leaq 0xdb8(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xc0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xc0(%rbp), %rdi
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x691a(%rip), %rsi      # 0x9004
callq 0x21d0
movq %rax, %rdi
leaq 0xd77(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xb8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xb8(%rbp), %rdi
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x68e4(%rip), %rsi      # 0x900f
callq 0x21d0
movq %rax, %rdi
movq 0xb86e(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
movq 0xb85f(%rip), %rsi      # 0xdfa8
callq 0x2220
jmp 0x2822
cmpl $0x3, 0xbada(%rip)      # 0xe234
jne 0x2820
movq 0xbad1(%rip), %rax      # 0xe238
movq 0x10(%rax), %rsi
leaq 0xbace(%rip), %rdi      # 0xe240
movl $0x10, %edx
callq 0x2050
leaq 0xbabd(%rip), %rdi      # 0xe240
leaq 0xce6(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xd0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xd0(%rbp), %rdi
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x6848(%rip), %rsi      # 0x9004
callq 0x21d0
movq %rax, %rdi
leaq 0xca5(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xc8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xc8(%rbp), %rdi
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x6812(%rip), %rsi      # 0x900f
callq 0x21d0
movq %rax, %rdi
movq 0xb79c(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
movq 0xb78d(%rip), %rsi      # 0xdfa8
callq 0x2220
jmp 0x2822
jmp 0x2846
movq 0xb79d(%rip), %rdi      # 0xdfc8
leaq 0x67e5(%rip), %rsi      # 0x9017
callq 0x21d0
movq %rax, %rdi
movq 0xb767(%rip), %rsi      # 0xdfa8
callq 0x2220
callq 0x35d0
movl %eax, -0x2c(%rbp)
cmpl $0x0, -0x2c(%rbp)
je 0x29d2
cmpl $0x23, -0x2c(%rbp)
jne 0x288b
leaq 0xbc03(%rip), %rax      # 0xe468
movq (%rax), %rsi
leaq -0x11(%rbp), %rdi
callq 0x66d0
leaq 0xbbd0(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbbc0(%rip), %eax      # 0xe440
movl %eax, 0xbbba(%rip)      # 0xe440
jmp 0x29c5
cmpl $0x27, -0x2c(%rbp)
jne 0x28be
leaq 0xbbd0(%rip), %rax      # 0xe468
movq (%rax), %rsi
leaq -0x12(%rbp), %rdi
callq 0x6230
leaq 0xbb9d(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbb8d(%rip), %eax      # 0xe440
movl %eax, 0xbb87(%rip)      # 0xe440
jmp 0x29c3
cmpl $0x4f, -0x2c(%rbp)
jne 0x28f1
leaq 0xbb9d(%rip), %rax      # 0xe468
movq (%rax), %rsi
leaq -0x13(%rbp), %rdi
callq 0x6480
leaq 0xbb6a(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbb5a(%rip), %eax      # 0xe440
movl %eax, 0xbb54(%rip)      # 0xe440
jmp 0x29c1
cmpl $0x5f, -0x2c(%rbp)
jne 0x2911
leaq 0xbb4a(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbb3a(%rip), %eax      # 0xe440
movl %eax, 0xbb34(%rip)      # 0xe440
jmp 0x29bf
cmpl $0x6e, -0x2c(%rbp)
jne 0x2941
leaq 0xbb4a(%rip), %rax      # 0xe468
movq (%rax), %rsi
leaq -0x14(%rbp), %rdi
callq 0x67d0
leaq 0xbb17(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbb07(%rip), %eax      # 0xe440
movl %eax, 0xbb01(%rip)      # 0xe440
jmp 0x29bd
cmpl $0x6f, -0x2c(%rbp)
jne 0x2971
leaq 0xbb1a(%rip), %rax      # 0xe468
movq (%rax), %rsi
leaq -0x15(%rbp), %rdi
callq 0x6ab0
leaq 0xbae7(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbad7(%rip), %eax      # 0xe440
movl %eax, 0xbad1(%rip)      # 0xe440
jmp 0x29bb
cmpl $0x60, -0x2c(%rbp)
jne 0x298e
leaq 0xbaca(%rip), %rax      # 0xe448
movl (%rax), %eax
addl 0xbaba(%rip), %eax      # 0xe440
movl %eax, 0xbab4(%rip)      # 0xe440
jmp 0x29b9
cmpl $0xc7, -0x2c(%rbp)
jne 0x29b5
leaq 0xbaca(%rip), %rax      # 0xe468
movq (%rax), %rsi
leaq 0xb868(%rip), %rax      # 0xe210
movl (%rax), %edx
leaq -0x16(%rbp), %rdi
callq 0x6d90
jmp 0x29b7
jmp 0x29b7
jmp 0x29b9
jmp 0x29bb
jmp 0x29bd
jmp 0x29bf
jmp 0x29c1
jmp 0x29c3
jmp 0x29c5
callq 0x35d0
movl %eax, -0x2c(%rbp)
jmp 0x284e
cmpl $0x2, 0xb85b(%rip)      # 0xe234
jne 0x2ee6
movq 0xb5e2(%rip), %rdi      # 0xdfc8
movq 0xb5bb(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
movq 0xb5ac(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
leaq 0x6623(%rip), %rsi      # 0x902e
callq 0x21d0
movq %rax, %rdi
movq 0xb58e(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
movq 0xb57f(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb593(%rip), %rdi      # 0xdfc8
leaq 0xa34(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x150(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x150(%rbp), %rdi
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x65cb(%rip), %rsi      # 0x9039
callq 0x21d0
movq %rax, %rdi
leaq 0x9f3(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x148(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x148(%rbp), %rdi
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x658f(%rip), %rsi      # 0x903e
callq 0x21d0
movq %rax, %rdi
movq 0xb4ea(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb4fe(%rip), %rdi      # 0xdfc8
leaq 0x99f(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x140(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x140(%rbp), %rdi
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x6541(%rip), %rsi      # 0x9044
callq 0x21d0
movq %rax, %rdi
leaq 0x95e(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x138(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x138(%rbp), %rdi
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb97c(%rip), %rax      # 0xe4c0
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xb453(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb467(%rip), %rdi      # 0xdfc8
leaq 0x908(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x130(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x130(%rbp), %rdi
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x64b5(%rip), %rsi      # 0x904f
callq 0x21d0
movq %rax, %rdi
leaq 0x8c7(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x128(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x128(%rbp), %rdi
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb91d(%rip), %rax      # 0xe4f8
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xb3bc(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb3d0(%rip), %rdi      # 0xdfc8
leaq 0x871(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x120(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x120(%rbp), %rdi
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x6425(%rip), %rsi      # 0x9056
callq 0x21d0
movq %rax, %rdi
leaq 0x830(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x118(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x118(%rbp), %rdi
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb88a(%rip), %rax      # 0xe4fc
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xb325(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb339(%rip), %rdi      # 0xdfc8
leaq 0x7da(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x110(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x110(%rbp), %rdi
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x6397(%rip), %rsi      # 0x905f
callq 0x21d0
movq %rax, %rdi
leaq 0x799(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x108(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x108(%rbp), %rdi
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb7f7(%rip), %rax      # 0xe500
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xb28e(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb2a2(%rip), %rdi      # 0xdfc8
leaq 0x743(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x100(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x100(%rbp), %rdi
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x630a(%rip), %rsi      # 0x9069
callq 0x21d0
movq %rax, %rdi
leaq 0x702(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xf8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xf8(%rbp), %rdi
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb764(%rip), %rax      # 0xe504
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xb1f7(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb20b(%rip), %rdi      # 0xdfc8
leaq 0x6ac(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xf0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xf0(%rbp), %rdi
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x627b(%rip), %rsi      # 0x9071
callq 0x21d0
movq %rax, %rdi
leaq 0x66b(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xe8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xe8(%rbp), %rdi
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb3e1(%rip), %rax      # 0xe218
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xb160(%rip), %rsi      # 0xdfa8
callq 0x2220
movq 0xb174(%rip), %rdi      # 0xdfc8
leaq 0x615(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xe0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xe0(%rbp), %rdi
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x61e9(%rip), %rsi      # 0x9076
callq 0x21d0
movq %rax, %rdi
leaq 0x5d4(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0xd8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0xd8(%rbp), %rdi
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
movl 0xb573(%rip), %esi      # 0xe440
callq 0x2380
movq %rax, %rdi
movq 0xb0cc(%rip), %rsi      # 0xdfa8
callq 0x2220
jmp 0x3439
cmpl $0x3, 0xb347(%rip)      # 0xe234
jne 0x3437
leaq 0xb346(%rip), %rdi      # 0xe240
movq 0xb0a7(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
movq 0xb098(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
leaq 0x610f(%rip), %rsi      # 0x902e
callq 0x21d0
movq %rax, %rdi
movq 0xb07a(%rip), %rsi      # 0xdfa8
callq 0x2220
movq %rax, %rdi
movq 0xb06b(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xb2f7(%rip), %rdi      # 0xe240
leaq 0x520(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1d0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1d0(%rbp), %rdi
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x60b7(%rip), %rsi      # 0x9039
callq 0x21d0
movq %rax, %rdi
leaq 0x4df(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1c8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1c8(%rbp), %rdi
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x607b(%rip), %rsi      # 0x903e
callq 0x21d0
movq %rax, %rdi
movq 0xafd6(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xb262(%rip), %rdi      # 0xe240
leaq 0x48b(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1c0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1c0(%rbp), %rdi
movl %eax, -0x78(%rbp)
movl -0x78(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x602d(%rip), %rsi      # 0x9044
callq 0x21d0
movq %rax, %rdi
leaq 0x44a(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1b8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1b8(%rbp), %rdi
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb468(%rip), %rax      # 0xe4c0
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xaf3f(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xb1cb(%rip), %rdi      # 0xe240
leaq 0x3f4(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1b0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1b0(%rbp), %rdi
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x5fa1(%rip), %rsi      # 0x904f
callq 0x21d0
movq %rax, %rdi
leaq 0x3b3(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1a8(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1a8(%rbp), %rdi
movl %eax, -0x84(%rbp)
movl -0x84(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb403(%rip), %rax      # 0xe4f8
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xaea2(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xb12e(%rip), %rdi      # 0xe240
leaq 0x357(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x1a0(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x1a0(%rbp), %rdi
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x5f05(%rip), %rsi      # 0x9056
callq 0x21d0
movq %rax, %rdi
leaq 0x310(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x198(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x198(%rbp), %rdi
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb364(%rip), %rax      # 0xe4fc
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xadff(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xb08b(%rip), %rdi      # 0xe240
leaq 0x2b4(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x190(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x190(%rbp), %rdi
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x5e6b(%rip), %rsi      # 0x905f
callq 0x21d0
movq %rax, %rdi
leaq 0x26d(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x188(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x188(%rbp), %rdi
movl %eax, -0x94(%rbp)
movl -0x94(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb2c5(%rip), %rax      # 0xe500
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xad5c(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xafe8(%rip), %rdi      # 0xe240
leaq 0x211(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x180(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x180(%rbp), %rdi
movl %eax, -0x98(%rbp)
movl -0x98(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x5dd2(%rip), %rsi      # 0x9069
callq 0x21d0
movq %rax, %rdi
leaq 0x1ca(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x178(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x178(%rbp), %rdi
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xb226(%rip), %rax      # 0xe504
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xacb9(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xaf45(%rip), %rdi      # 0xe240
leaq 0x16e(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x170(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x170(%rbp), %rdi
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x5d37(%rip), %rsi      # 0x9071
callq 0x21d0
movq %rax, %rdi
leaq 0x127(%rip), %rsi       # 0x3470
callq 0x20b0
movq %rax, -0x168(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x168(%rbp), %rdi
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0xae97(%rip), %rax      # 0xe218
movl (%rax), %esi
callq 0x2380
movq %rax, %rdi
movq 0xac16(%rip), %rsi      # 0xdfa8
callq 0x2220
leaq 0xaea2(%rip), %rdi      # 0xe240
leaq 0xcb(%rip), %rsi        # 0x3470
callq 0x20b0
movq %rax, -0x160(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x160(%rbp), %rdi
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %esi
callq 0x2280
movq %rax, %rdi
leaq 0x5c99(%rip), %rsi      # 0x9076
callq 0x21d0
movq %rax, %rdi
leaq 0x84(%rip), %rsi        # 0x3470
callq 0x20b0
movq %rax, -0x158(%rbp)
movl $0x1e, %edi
callq 0x34a0
movq -0x158(%rbp), %rdi
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %esi
callq 0x2280
movq %rax, %rdi
movl 0xb01d(%rip), %esi      # 0xe440
callq 0x2380
movq %rax, %rdi
movq 0xab76(%rip), %rsi      # 0xdfa8
callq 0x2220
jmp 0x3439
leaq -0x17(%rbp), %rdi
callq 0x5ba0
leaq 0xadf7(%rip), %rdi      # 0xe240
callq 0x22e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)