// File: /workspace/github_cpp_makefile_star2_O2/cimtools[P]yaaclc/src/Analizer_ACL.cpp
// Function: Analizer_ACL::lexer()
void Analizer_ACL::lexer(){
    int line_count, iterations;

    line_count =0;
    iterations = 0;
    token_iterator=token_vector.begin();

    do{
        #ifdef DEBUGGING
        cout << "\n\nPosicaoao do iterador no comeco da analise  "<<std::distance(token_vector.begin(), token_iterator) << endl;
        cout<< "Start decoding token:    "<< (**token_iterator).content << " ------- " << (**token_iterator).type <<endl;
        #endif
        if ( eat_tokens_if_match({"WHITE SPACE"}) ){
            //Ignore.
        }
        else if( eat_tokens_if_match({"NEW LINE"}) ){

            ++line_count;

        }
        else if( eat_tokens_if_match({"_dimg","WHITE SPACE","WORD","INDEX", "NEW LINE"})){
            string map_key, index;
            int number_of_indexes;

            ++line_count;

            map_key = "var_" +  get_relative_token_content(-3) +"[";
            index =  get_relative_token_content(-2);
            index.erase(0,1); // remove '[' from index (first char)
            index.pop_back(); // remove ']' from index (last char)
            number_of_indexes = atoi(index.c_str());

            for(int i =0; i <= number_of_indexes; ++i ){
                #ifdef DEBUGGING
                cout << "\nDeclaring global variable named   " << map_key + to_string(i) + "]" << endl;
                #endif
                (**scopes.begin())[ map_key + to_string(i) + "]" ] = "";
            }

        }
        else if( eat_tokens_if_match({"_if", "WHITE SPACE"})){//Run the if block until an else, or jump until the correspondent else.
            string first_key, first_value, second_key, second_value, used_operator;
            bool condition;

            if( eat_tokens_if_match({"WORD","INDEX","WHITE SPACE"}) ){
                first_key = "var_" +  get_relative_token_content(-3) +  get_relative_token_content(-2);
            }else if( eat_tokens_if_match({"WORD", "WHITE SPACE"}) ){
                first_key = "var_" +  get_relative_token_content(-2);
            }else{
                cout << "\n!Expecting variable. Sintax error." << line_count << endl;
            }
            #ifdef DEBUGGING
            cout << "First key is  " << first_key << endl;
            #endif
            first_value = search_scopes( first_key );
            
            if( eat_tokens_if_match({"_<", "WHITE SPACE", "_>", "WHITE SPACE" })){
                used_operator = "< >";
            }else if( eat_tokens_if_match({ "OPERATOR", "WHITE SPACE" }) ){
                used_operator =  get_relative_token_content(-2);
            }else{
                cout << "\n!!Expecting operator. Sintax error." << line_count << endl;
            }

            if( eat_tokens_if_match({ "WORD", "INDEX", "NEW LINE" }) ){
                second_key = "var_" +  get_relative_token_content(-3) +  get_relative_token_content(-2);
                second_value = search_scopes( second_key );
            }else if( eat_tokens_if_match({ "WORD", "NEW LINE" }) ){
                second_key = "var_" +  get_relative_token_content(-2);
                second_value = search_scopes( second_key );
            }else if( eat_tokens_if_match({ "NUMBER", "NEW LINE" }) ){
                second_value =  get_relative_token_content(-2);
            }else{
                cout << "\n!Expecting variable. Sintax error." << line_count << endl;
            }

            ++line_count;
            #ifdef DEBUGGING
            cout << "The first value is " << first_value << "  the second value is " << second_value << endl;
            #endif
            if( used_operator == "=" ){
                condition = first_value == second_value;
            }else if( used_operator == "<"){
                condition = atoi(first_value.c_str()) < atoi(second_value.c_str()); 
            }else if( used_operator == ">"){
                condition = atoi(first_value.c_str()) > atoi(second_value.c_str());
            }else if( used_operator == "<=" ){
                condition = atoi(first_value.c_str()) <= atoi(second_value.c_str());
            }else if( used_operator == ">="){
                condition = atoi(first_value.c_str()) >= atoi(second_value.c_str());
            }else if( used_operator == "< >"){
                condition = atoi(first_value.c_str()) != atoi(second_value.c_str());
            }else{
                cout << "Error identifying the operator for comparison." << endl;
            }
            #ifdef DEBUGGING
            cout << "\nif condition is " << condition << endl;
            #endif
            if( condition ){
                //Enter if scope.
                scopes.push_back( new map<string,string> );
                ++scope_iterator;
            }else{
                //If case the condition wasent met, skip (the if block) until find endif or else. If get END token it is a ERROR!!
                skip_block();
            }
                
        }
        else if( eat_tokens_if_match({"_else"}) ){//If is reading else at this point is because it was inside an if, so the else block must be skipped.
            do{
                ++token_iterator;
                if((*token_iterator)->type == "END"){
                    cout << "coudn`t find the end of if block\n";
                    break;
                }
            }while( (*token_iterator)->content != "endif");
            ++token_iterator;//Skip the token that sinalizes the end of the block;

            --scope_iterator;
            scopes.pop_back();
        }
        else if( eat_tokens_if_match({ "_println", "WHITE SPACE", "STRING" })){ 
            string message, temp_read;

            message = get_relative_token_content(-1);
            message.erase(0,1); // erase the first char (")
            message.pop_back(); // erase the last char (")

            while( eat_tokens_if_match({ "WHITE SPACE", "STRING" })){
                temp_read = get_relative_token_content(-1);
                temp_read.erase(0,1);
                temp_read.pop_back();
                message += temp_read;
            }

            if( ! eat_tokens_if_match({ "NEW LINE" }) ){
                cout << "ERROR: EXPECTING NEW LINE TOKEN!!!!!!!" << endl;
            }
            #ifdef DEBUGGING
            cout << "_println case: Printing message   " << message << endl;
            #endif
            cout << message << endl;
        }
        else if( eat_tokens_if_match({ "_print", "WHITE SPACE", "STRING" })){ 
            string message, temp_read;

            message = get_relative_token_content(-1);
            message.erase(0,1); // erase the first char (")
            message.pop_back(); // erase the last char (")

            while( eat_tokens_if_match({ "WHITE SPACE", "STRING" })){
                temp_read = get_relative_token_content(-1);
                temp_read.erase(0,1);
                temp_read.pop_back();
                message += temp_read;
            }

            if( ! eat_tokens_if_match({ "NEW LINE" }) ){
                cout << "ERROR: EXPECTING NEW LINE TOKEN!!!!!!!" << endl;
            }else{
                ++line_count;
            }

            cout << message ;
        }
        else if( eat_tokens_if_match({ "_endif" }) ){    
            //If it hit an endif here it is geting out of a scope, then pop the scope
            --scope_iterator;
            scopes.pop_back();

        }
        else if( eat_tokens_if_match({ "_set", "WHITE SPACE", "WORD" }) ){
            string key, value;

            if( eat_tokens_if_match({ "INDEX", "WHITE SPACE", "_=", "WHITE SPACE", "NUMBER" }) ){
                key = "var_" + (*(token_iterator-6))->content + (*(token_iterator-5))->content;
                value = (*(token_iterator-1))->content;
            }else if( eat_tokens_if_match({ "WHITE SPACE", "_=", "WHITE SPACE", "NUMBER" }) ){
                key = "var_" + (*(token_iterator-5))->content;
                value = (*(token_iterator-1))->content;
            }

            (**scope_iterator)[key]= value;
            #ifdef DEBUGGING
            cout << "new value is " << key << " = " << (**scope_iterator)[key] << endl;
            #endif
        }   
        else if(eat_tokens_if_match({ "_delay", "WHITE SPACE", "NUMBER", "NEW LINE"})){
            
            string time_delay = get_relative_token_content(-2);
            int time_delay_converted = atoi(time_delay.c_str()) * 10000;
            cout<<"o valor de time delay eh  "<<time_delay<<endl;
            usleep(time_delay_converted);
            cout<<"testando delay"<<endl;
        }
        // else if( eat_tokens_if_match( { "FIRST TOKEN TYPE", "_token content" } )){
        //      Do something;
        // }
        else if((*token_iterator)->type == "END"){
            break;
        }

        ++iterations;

    }while( iterations < 200);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4a8, %rsp            # imm = 0x4A8
movq %rdi, %rbx
movq 0x20(%rdi), %rax
movq %rax, 0x38(%rdi)
leaq -0x148(%rbp), %rax
movq %rax, -0x178(%rbp)
movl $0x80, %ecx
leaq -0x168(%rbp), %r12
leaq (%r12,%rcx), %rax
movq %rax, -0x260(%rbp)
leaq -0x148(%rbp), %rax
movq %rax, -0x240(%rbp)
movq %rax, -0x238(%rbp)
movq %rax, -0x230(%rbp)
addq %r12, %rcx
movq %rcx, -0x258(%rbp)
movq %rax, -0x1c0(%rbp)
movq %rax, -0x170(%rbp)
movq %rax, -0x1b8(%rbp)
movq %rax, -0x250(%rbp)
movq %rax, -0x1c8(%rbp)
movq %rax, -0x248(%rbp)
leaq -0x1b0(%rbp), %r14
movl %eax, -0xa4(%rbp)
xorl %eax, %eax
movl $0x0, -0x3c(%rbp)
movq %rdi, -0x30(%rbp)
movl %eax, -0x34(%rbp)
movq %r12, %rdi
leaq 0x37b8(%rip), %rsi      # 0x7165
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x1
popq %rdx
leaq -0x80(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
movq %r12, %rdi
callq 0x2110
testb %bl, %bl
jne 0x3ee0
leaq -0x80(%rbp), %r13
movq %r12, %rdi
leaq 0x3761(%rip), %rsi      # 0x715c
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x470(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
pushq $0x1
popq %rdx
movq %r13, %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3584
movl %eax, %ebx
movq %r15, %rdi
callq 0x5c5e
movq %r12, %rdi
callq 0x2110
testb %bl, %bl
je 0x3a49
incl -0x3c(%rbp)
jmp 0x3ee0
movq %r12, %rdi
leaq 0x3750(%rip), %rsi      # 0x71a3
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x36f7(%rip), %rsi      # 0x7165
movq %r13, %rdx
callq 0x28b4
leaq -0x458(%rbp), %r14
leaq -0x128(%rbp), %rdi
leaq 0x3681(%rip), %rsi      # 0x710c
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x108(%rbp), %rdi
leaq 0x36b1(%rip), %rsi      # 0x7156
leaq -0xa0(%rbp), %rdx
callq 0x28b4
movq -0x260(%rbp), %rdi
leaq 0x369d(%rip), %rsi      # 0x715c
leaq -0x208(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x5
popq %rdx
leaq -0x198(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
movl $0x80, %r14d
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x3afb
testb %bl, %bl
je 0x3c9b
leaq -0x158(%rbp), %rax
movq %rax, -0x168(%rbp)
andq $0x0, -0x160(%rbp)
xorl %ecx, %ecx
movb %cl, -0x158(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
movb %cl, -0x50(%rbp)
leaq -0xa0(%rbp), %r13
movq %r13, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x3
popq %rdx
callq 0x378a
leaq -0xc8(%rbp), %r14
movq %r14, %rdi
leaq 0x3634(%rip), %rsi      # 0x71a9
movq %r13, %rdx
callq 0x5cb2
leaq -0x80(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x3620(%rip), %rdx      # 0x71ae
callq 0x5c89
movq %r12, %rdi
movq %r15, %rsi
callq 0x2240
movq %r15, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
leaq -0xa0(%rbp), %rdi
callq 0x2110
movq %r15, %rdi
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2240
movq %r15, %rdi
callq 0x2110
movq %rbx, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x2070
incl -0x3c(%rbp)
movq %rbx, %rdi
callq 0x2230
movq -0x60(%rbp), %rdi
callq 0x22a0
movl %eax, %r12d
xorl %ebx, %ebx
cmpl %r12d, %ebx
jg 0x3ec1
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %r14
leaq -0xa0(%rbp), %r15
movq %r15, %rdi
movl %ebx, %esi
callq 0x5d77
leaq -0xc8(%rbp), %r13
movq %r13, %rdi
leaq -0x168(%rbp), %rsi
movq %r15, %rdx
callq 0x5d49
leaq -0x80(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
leaq 0x355c(%rip), %rdx      # 0x71b0
callq 0x5c89
movq %r14, %rdi
movq %r15, %rsi
callq 0x5ce0
movq %rax, %rdi
leaq 0x34da(%rip), %rsi      # 0x7148
callq 0x2370
leaq -0x80(%rbp), %rdi
callq 0x2110
leaq -0xc8(%rbp), %rdi
callq 0x2110
leaq -0xa0(%rbp), %rdi
callq 0x2110
incl %ebx
jmp 0x3c05
movq %r12, %rdi
leaq 0x350d(%rip), %rsi      # 0x71b2
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x34a5(%rip), %rsi      # 0x7165
leaq -0x80(%rbp), %rdx
callq 0x28b4
leaq -0x440(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0xc8(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x3cfe
testb %bl, %bl
je 0x3ef9
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
xorl %ecx, %ecx
movb %cl, -0x50(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
andq $0x0, -0xc0(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
movb %cl, -0x70(%rbp)
movb %cl, -0xb8(%rbp)
movb %cl, -0x90(%rbp)
leaq -0x1f8(%rbp), %rax
movq %rax, -0x208(%rbp)
andq $0x0, -0x200(%rbp)
movb %cl, -0x1f8(%rbp)
movq %r12, %rdi
leaq 0x336c(%rip), %rsi      # 0x710c
leaq -0x198(%rbp), %rdx
callq 0x28b4
leaq -0x148(%rbp), %rdi
leaq 0x339c(%rip), %rsi      # 0x7156
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x128(%rbp), %rdi
leaq 0x338d(%rip), %rsi      # 0x7165
leaq -0x228(%rbp), %rdx
callq 0x28b4
leaq -0x428(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x3
popq %rdx
leaq -0x35(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x40
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x3e16
testb %bl, %bl
je 0x416d
leaq -0x1e8(%rbp), %r14
movq %r14, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x3
popq %rdx
callq 0x378a
leaq -0x198(%rbp), %rdi
leaq 0x334a(%rip), %rsi      # 0x71a9
movq %r14, %rdx
callq 0x5cb2
leaq -0x228(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
movq %r12, %rdi
leaq -0x198(%rbp), %r14
movq %r14, %rsi
movq %r15, %rdx
callq 0x5dd7
leaq -0x60(%rbp), %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
leaq -0x1e8(%rbp), %rdi
jmp 0x423a
leaq -0x60(%rbp), %rdi
callq 0x2110
leaq -0x168(%rbp), %r12
movq %r12, %rdi
callq 0x2110
leaq -0x1b0(%rbp), %r14
movq -0x30(%rbp), %rbx
movl -0x34(%rbp), %eax
incl %eax
cmpl $0xc8, %eax
jne 0x39a0
jmp 0x5251
movq %r12, %rdi
leaq 0x333b(%rip), %rsi      # 0x723e
leaq -0x60(%rbp), %rdx
callq 0x28b4
leaq -0x1b0(%rbp), %r14
leaq -0x380(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
pushq $0x1
popq %rdx
leaq -0x80(%rbp), %rcx
callq 0x5c24
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x3584
movl %eax, %ebx
movq %r15, %rdi
callq 0x5c5e
movq %r12, %rdi
callq 0x2110
testb %bl, %bl
je 0x3f96
movq -0x30(%rbp), %rbx
movq 0x38(%rbx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x38(%rbx)
movq 0x8(%rax), %rdi
addq $0x20, %rdi
leaq 0x3159(%rip), %rsi      # 0x70c6
callq 0x5be3
testb %al, %al
jne 0x4244
movq 0x38(%rbx), %rax
movq (%rax), %rdi
leaq 0x32f4(%rip), %rsi      # 0x727c
callq 0x5bf3
testb %al, %al
jne 0x3f52
jmp 0x4257
movq %r12, %rdi
leaq 0x32a4(%rip), %rsi      # 0x7244
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x31aa(%rip), %rsi      # 0x7165
leaq -0x80(%rbp), %rdx
callq 0x28b4
leaq -0x368(%rbp), %r14
leaq -0x128(%rbp), %rdi
leaq 0x3176(%rip), %rsi      # 0x714f
leaq -0xc8(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x3
popq %rdx
leaq -0xa0(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x40
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4013
testb %bl, %bl
je 0x4275
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
xorl %ecx, %ecx
movb %cl, -0x50(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
movb %cl, -0x70(%rbp)
movq %r12, %rdi
movq -0x30(%rbp), %rsi
pushq $-0x1
popq %rdx
callq 0x378a
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %rbx, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x2070
leaq -0x60(%rbp), %rdi
callq 0x2230
movq -0x30(%rbp), %rbx
movq %r12, %rdi
leaq 0x30c4(%rip), %rsi      # 0x7165
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x148(%rbp), %rdi
leaq 0x3094(%rip), %rsi      # 0x714f
leaq -0xa0(%rbp), %rdx
callq 0x28b4
leaq -0x350(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0x208(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x40fc
testb %bl, %bl
je 0x4adb
movq %r12, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x1
popq %rdx
callq 0x378a
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r14, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x2070
movq %r14, %rdi
callq 0x2230
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x2390
jmp 0x4097
movq %r12, %rdi
leaq 0x2f95(%rip), %rsi      # 0x710c
leaq -0x198(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x2fd0(%rip), %rsi      # 0x7165
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
leaq -0x410(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0x228(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x41d6
testb %bl, %bl
je 0x444b
leaq -0x198(%rbp), %r14
movq %r14, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
movq %r12, %rdi
leaq 0x2f8e(%rip), %rsi      # 0x71a9
movq %r14, %rdx
callq 0x5cb2
leaq -0x60(%rbp), %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
jmp 0x4475
movq 0x6d8d(%rip), %rdi      # 0xafd8
leaq 0x2e90(%rip), %rsi      # 0x70e2
callq 0x21d0
addq $0x8, 0x38(%rbx)
movq 0x18(%rbx), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rbx)
movq %rbx, %rdi
callq 0x5e84
jmp 0x3ee4
movq %r12, %rdi
leaq 0x2ff5(%rip), %rsi      # 0x7274
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x2ecb(%rip), %rsi      # 0x7165
leaq -0x80(%rbp), %rdx
callq 0x28b4
leaq -0x128(%rbp), %rdi
leaq 0x2e9e(%rip), %rsi      # 0x714f
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x320(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x3
popq %rdx
leaq -0xa0(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x40
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x42f2
testb %bl, %bl
je 0x4b7e
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
xorl %ecx, %ecx
movb %cl, -0x50(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
movb %cl, -0x70(%rbp)
movq %r12, %rdi
movq -0x30(%rbp), %rsi
pushq $-0x1
popq %rdx
callq 0x378a
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %rbx, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x2070
movq %rbx, %rdi
callq 0x2230
movq -0x30(%rbp), %rbx
movq %r12, %rdi
leaq 0x2de6(%rip), %rsi      # 0x7165
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x148(%rbp), %rdi
leaq 0x2db6(%rip), %rsi      # 0x714f
leaq -0xa0(%rbp), %rdx
callq 0x28b4
leaq -0x308(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0x208(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x43da
testb %bl, %bl
je 0x4c58
movq %r12, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x1
popq %rdx
callq 0x378a
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r14, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x2070
movq %r14, %rdi
callq 0x2230
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x2390
jmp 0x4375
movq 0x6b86(%rip), %rdi      # 0xafd8
leaq 0x2d5d(%rip), %rsi      # 0x71b6
callq 0x21d0
movq -0x30(%rbp), %rbx
movq %rax, %rdi
movl -0x3c(%rbp), %esi
callq 0x2320
movq %rax, %rdi
callq 0x2120
leaq -0x4d0(%rbp), %r14
movq %r14, %rdi
leaq -0x60(%rbp), %rsi
callq 0x2260
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x3642
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r14, %rdi
callq 0x2110
movq %r12, %rdi
leaq 0x2d1e(%rip), %rsi      # 0x71da
leaq -0x198(%rbp), %rdx
callq 0x28b4
leaq -0x148(%rbp), %rdi
leaq 0x2c8f(%rip), %rsi      # 0x7165
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
leaq -0x3f8(%rbp), %r14
leaq -0x128(%rbp), %rdi
leaq 0x2ce6(%rip), %rsi      # 0x71dd
leaq -0x228(%rbp), %rdx
callq 0x28b4
leaq -0x108(%rbp), %rdi
leaq 0x2c54(%rip), %rsi      # 0x7165
leaq -0x35(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x4
popq %rdx
leaq -0xa5(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x60
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4548
testb %bl, %bl
je 0x4582
leaq -0x208(%rbp), %rdi
leaq 0x2c6c(%rip), %rsi      # 0x71e0
callq 0x2370
movq -0x30(%rbp), %rbx
jmp 0x465e
movq %r12, %rdi
leaq 0x2b8c(%rip), %rsi      # 0x7118
leaq -0x198(%rbp), %rdx
callq 0x28b4
leaq -0x148(%rbp), %rdi
leaq 0x2bbf(%rip), %rsi      # 0x7165
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x3e0(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0x228(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x45eb
testb %bl, %bl
je 0x4634
movq %r12, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
leaq -0x208(%rbp), %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
jmp 0x465e
movq 0x699d(%rip), %rdi      # 0xafd8
leaq 0x2ba2(%rip), %rsi      # 0x71e4
callq 0x21d0
movq -0x30(%rbp), %rbx
movq %rax, %rdi
movl -0x3c(%rbp), %esi
callq 0x2320
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
leaq 0x2aa4(%rip), %rsi      # 0x710c
leaq -0x198(%rbp), %rdx
callq 0x28b4
leaq -0x148(%rbp), %rdi
leaq 0x2ad4(%rip), %rsi      # 0x7156
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
leaq -0x128(%rbp), %rdi
leaq 0x2ac0(%rip), %rsi      # 0x715c
leaq -0x228(%rbp), %rdx
callq 0x28b4
leaq -0x3c8(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x3
popq %rdx
leaq -0x35(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x40
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x46da
testb %bl, %bl
je 0x47bb
leaq -0x1e8(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x3
popq %rdx
callq 0x378a
leaq -0x1b0(%rbp), %r14
leaq -0x198(%rbp), %rdi
leaq 0x2a7f(%rip), %rsi      # 0x71a9
movq %r15, %rdx
callq 0x5cb2
leaq -0x228(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
movq %r12, %rdi
leaq -0x198(%rbp), %r15
movq %r15, %rsi
movq %r13, %rdx
callq 0x5dd7
leaq -0xc8(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
leaq -0x228(%rbp), %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
leaq -0x1e8(%rbp), %rdi
callq 0x2110
leaq -0x4b0(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x2260
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x3642
jmp 0x48ba
movq %r12, %rdi
leaq 0x2947(%rip), %rsi      # 0x710c
leaq -0x198(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x2979(%rip), %rsi      # 0x715c
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
leaq -0x3b0(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0x228(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4824
testb %bl, %bl
je 0x49e1
leaq -0x198(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
leaq -0x1b0(%rbp), %r14
movq %r12, %rdi
leaq 0x2939(%rip), %rsi      # 0x71a9
movq %r15, %rdx
callq 0x5cb2
leaq -0xc8(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
leaq -0x490(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x2260
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x3642
leaq -0xa0(%rbp), %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
leaq -0x208(%rbp), %r15
movq %r15, %rdi
leaq 0x2920(%rip), %rsi      # 0x720a
callq 0x5be3
testb %al, %al
je 0x4957
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x5e48
testb %al, %al
je 0x4991
pushq $0x30
popq %rdi
callq 0x21e0
andl $0x0, 0x8(%rax)
andq $0x0, 0x10(%rax)
movq %rax, %rcx
addq $0x8, %rcx
movq %rcx, 0x18(%rax)
movq %rcx, 0x20(%rax)
andq $0x0, 0x28(%rax)
movq %rax, -0x168(%rbp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5e74
movq 0x18(%rbx), %rax
movq (%rax), %rax
movq %rax, 0x18(%rbx)
movb $0x1, %al
movl %eax, -0xa4(%rbp)
jmp 0x49a3
movq %r15, %rdi
leaq 0x287a(%rip), %rsi      # 0x71db
callq 0x5be3
testb %al, %al
je 0x4a9c
movq -0x80(%rbp), %rdi
callq 0x22a0
movl %eax, %ebx
movq -0xa0(%rbp), %rdi
callq 0x22a0
cmpl %eax, %ebx
movq -0x30(%rbp), %rbx
jl 0x490b
movq %rbx, %rdi
callq 0x381a
movl $0x0, -0xa4(%rbp)
incl -0x3c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x2110
leaq -0xa0(%rbp), %rdi
callq 0x2110
leaq -0xc8(%rbp), %rdi
callq 0x2110
leaq -0x80(%rbp), %rdi
callq 0x2110
leaq -0x60(%rbp), %rdi
callq 0x2110
jmp 0x3ee4
movq %r12, %rdi
leaq 0x2726(%rip), %rsi      # 0x7111
leaq -0x198(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x2753(%rip), %rsi      # 0x715c
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
leaq -0x398(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
pushq $0x2
popq %rdx
leaq -0x228(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4a4a
testb %bl, %bl
je 0x4c22
movq %r12, %rdi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
pushq $-0x2
popq %rdx
callq 0x378a
leaq -0x1b0(%rbp), %r14
leaq -0xa0(%rbp), %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
jmp 0x48d4
movq %r15, %rdi
leaq 0x273c(%rip), %rsi      # 0x71e2
callq 0x5be3
testb %al, %al
je 0x4be3
movq -0x80(%rbp), %rdi
callq 0x22a0
movl %eax, %ebx
movq -0xa0(%rbp), %rdi
callq 0x22a0
cmpl %eax, %ebx
movq -0x30(%rbp), %rbx
jg 0x490b
jmp 0x4991
movq %r12, %rdi
leaq 0x2677(%rip), %rsi      # 0x715c
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x1b0(%rbp), %r14
movq -0x30(%rbp), %rbx
leaq -0x338(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
pushq $0x1
popq %rdx
leaq -0xa0(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3584
movl %eax, %ebx
movq %r15, %rdi
callq 0x5c5e
movq %r12, %rdi
callq 0x2110
testb %bl, %bl
jne 0x4b54
movq 0x6498(%rip), %rdi      # 0xafd8
leaq 0x2706(%rip), %rsi      # 0x724d
callq 0x21d0
movq %rax, %rdi
callq 0x2120
movq 0x647d(%rip), %rdi      # 0xafd8
leaq -0x60(%rbp), %rsi
callq 0x21c0
movq %rax, %rdi
callq 0x2120
leaq -0x80(%rbp), %rdi
callq 0x2110
leaq -0x60(%rbp), %rdi
jmp 0x4f4c
movq %r12, %rdi
leaq 0x26f3(%rip), %rsi      # 0x727b
leaq -0x60(%rbp), %rdx
callq 0x28b4
leaq -0x1b0(%rbp), %r14
movq -0x30(%rbp), %rbx
leaq -0x2d8(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
pushq $0x1
popq %rdx
leaq -0x80(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3584
movl %eax, %ebx
movq %r15, %rdi
callq 0x5c5e
movq %r12, %rdi
callq 0x2110
testb %bl, %bl
je 0x4cc6
movq -0x30(%rbp), %rbx
jmp 0x425c
movq %r15, %rdi
leaq 0x261c(%rip), %rsi      # 0x7209
callq 0x5be3
testb %al, %al
je 0x4ed3
movq -0x80(%rbp), %rdi
callq 0x22a0
movl %eax, %ebx
movq -0xa0(%rbp), %rdi
callq 0x22a0
cmpl %eax, %ebx
movq -0x30(%rbp), %rbx
jle 0x490b
jmp 0x4991
movq 0x63af(%rip), %rdi      # 0xafd8
leaq 0x2586(%rip), %rsi      # 0x71b6
callq 0x21d0
leaq -0x1b0(%rbp), %r14
movq -0x30(%rbp), %rbx
movq %rax, %rdi
movl -0x3c(%rbp), %esi
callq 0x2320
movq %rax, %rdi
callq 0x2120
jmp 0x48d9
movq %r12, %rdi
leaq 0x24fa(%rip), %rsi      # 0x715c
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x1b0(%rbp), %r14
movq -0x30(%rbp), %rbx
leaq -0x2f0(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
pushq $0x1
popq %rdx
leaq -0xa0(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3584
movl %eax, %ebx
movq %r15, %rdi
callq 0x5c5e
movq %r12, %rdi
callq 0x2110
testb %bl, %bl
je 0x4f12
incl -0x3c(%rbp)
leaq -0x60(%rbp), %rbx
jmp 0x4f31
movq %r12, %rdi
leaq 0x25b2(%rip), %rsi      # 0x7282
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x247a(%rip), %rsi      # 0x7165
leaq -0x80(%rbp), %rdx
callq 0x28b4
leaq -0x2c0(%rbp), %r14
leaq -0x128(%rbp), %rdi
leaq 0x2403(%rip), %rsi      # 0x710c
leaq -0xc8(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x3
popq %rdx
leaq -0xa0(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x40
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4d43
testb %bl, %bl
je 0x4f56
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
xorl %ecx, %ecx
movb %cl, -0x50(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
movb %cl, -0x70(%rbp)
movq %r12, %rdi
leaq 0x23c5(%rip), %rsi      # 0x7156
leaq -0xc8(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x2a8(%rbp), %r14
leaq -0x148(%rbp), %rdi
leaq 0x23af(%rip), %rsi      # 0x7165
leaq -0xa0(%rbp), %rdx
callq 0x28b4
leaq -0x128(%rbp), %rdi
leaq 0x24b7(%rip), %rsi      # 0x7287
leaq -0x208(%rbp), %rdx
callq 0x28b4
leaq -0x108(%rbp), %rdi
leaq 0x237b(%rip), %rsi      # 0x7165
leaq -0x198(%rbp), %rdx
callq 0x28b4
movq -0x258(%rbp), %rdi
leaq 0x230d(%rip), %rsi      # 0x7111
leaq -0x1e8(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x5
popq %rdx
leaq -0x228(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
movl $0x80, %r14d
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4e40
testb %bl, %bl
je 0x50f8
movq -0x30(%rbp), %r13
movq 0x38(%r13), %rax
movq -0x30(%rax), %rdx
leaq -0xc8(%rbp), %r15
movq %r15, %rdi
leaq 0x232a(%rip), %rsi      # 0x71a9
callq 0x5ebb
leaq -0x1b0(%rbp), %r14
movq 0x38(%r13), %rax
movq -0x28(%rax), %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0x5e92
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2110
movq 0x38(%r13), %rax
movq -0x8(%rax), %rsi
leaq -0x80(%rbp), %rdi
callq 0x2140
jmp 0x51fd
movq %r15, %rdi
leaq 0x232f(%rip), %rsi      # 0x720c
callq 0x5be3
testb %al, %al
je 0x5087
movq -0x80(%rbp), %rdi
callq 0x22a0
movl %eax, %ebx
movq -0xa0(%rbp), %rdi
callq 0x22a0
cmpl %eax, %ebx
movq -0x30(%rbp), %rbx
jge 0x490b
jmp 0x4991
movq 0x60bf(%rip), %rdi      # 0xafd8
leaq 0x232d(%rip), %rsi      # 0x724d
callq 0x21d0
leaq -0x60(%rbp), %rbx
movq %rax, %rdi
callq 0x2120
movq 0x60a0(%rip), %rdi      # 0xafd8
movq %rbx, %rsi
callq 0x21c0
leaq -0x80(%rbp), %rdi
callq 0x2110
movq %rbx, %rdi
callq 0x2110
jmp 0x3ee0
movq %r12, %rdi
leaq 0x232a(%rip), %rsi      # 0x728a
leaq -0x60(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x21ea(%rip), %rsi      # 0x7165
leaq -0x80(%rbp), %rdx
callq 0x28b4
leaq -0x278(%rbp), %r14
leaq -0x128(%rbp), %rdi
leaq 0x2178(%rip), %rsi      # 0x7111
leaq -0xc8(%rbp), %rdx
callq 0x28b4
leaq -0x108(%rbp), %rdi
leaq 0x21a9(%rip), %rsi      # 0x715c
leaq -0xa0(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x4
popq %rdx
leaq -0x208(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x60
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4fed
testb %bl, %bl
je 0x50c6
movq %r12, %rdi
movq -0x30(%rbp), %rsi
pushq $-0x2
popq %rdx
callq 0x378a
movq -0x168(%rbp), %rdi
callq 0x22a0
movl %eax, %ebx
movq 0x5fa5(%rip), %rdi      # 0xafd8
leaq 0x2257(%rip), %rsi      # 0x7291
callq 0x21d0
leaq -0x1b0(%rbp), %r14
movq %rax, %rdi
movq %r12, %rsi
callq 0x21c0
movq %rax, %rdi
callq 0x2120
imull $0x2710, %ebx, %edi     # imm = 0x2710
callq 0x2270
movq 0x5f6d(%rip), %rdi      # 0xafd8
leaq 0x223a(%rip), %rsi      # 0x72ac
callq 0x21d0
movq %rax, %rdi
callq 0x2120
movq %r12, %rdi
jmp 0x4f4c
movq %r15, %rdi
leaq 0x214f(%rip), %rsi      # 0x71e0
callq 0x5be3
testb %al, %al
je 0x5224
movq -0x80(%rbp), %rdi
callq 0x22a0
movl %eax, %ebx
movq -0xa0(%rbp), %rdi
callq 0x22a0
cmpl %eax, %ebx
movq -0x30(%rbp), %rbx
jne 0x490b
jmp 0x4991
movq -0x30(%rbp), %rbx
movq 0x38(%rbx), %rax
movq (%rax), %rdi
addq $0x20, %rdi
leaq 0x1fea(%rip), %rsi      # 0x70c6
callq 0x5be3
testb %al, %al
leaq -0x1b0(%rbp), %r14
movl -0x34(%rbp), %eax
je 0x3ee7
jmp 0x5251
movq %r12, %rdi
leaq 0x2063(%rip), %rsi      # 0x7165
leaq -0xc8(%rbp), %rdx
callq 0x28b4
movq -0x30(%rbp), %rbx
leaq -0x148(%rbp), %rdi
leaq 0x2167(%rip), %rsi      # 0x7287
leaq -0xa0(%rbp), %rdx
callq 0x28b4
leaq -0x290(%rbp), %r14
leaq -0x128(%rbp), %rdi
leaq 0x2024(%rip), %rsi      # 0x7165
leaq -0x208(%rbp), %rdx
callq 0x28b4
leaq -0x108(%rbp), %rdi
leaq 0x1fb6(%rip), %rsi      # 0x7111
leaq -0x198(%rbp), %rdx
callq 0x28b4
movq %r14, %rdi
movq %r12, %rsi
pushq $0x4
popq %rdx
leaq -0x1e8(%rbp), %rcx
callq 0x5c24
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3584
movl %eax, %ebx
movq %r14, %rdi
callq 0x5c5e
pushq $0x60
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x5195
testb %bl, %bl
leaq -0x60(%rbp), %rbx
leaq -0x1b0(%rbp), %r14
movq -0x30(%rbp), %r13
je 0x51fd
movq 0x38(%r13), %rax
movq -0x28(%rax), %rdx
movq %r12, %rdi
leaq 0x1fd5(%rip), %rsi      # 0x71a9
callq 0x5ebb
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2240
movq %r12, %rdi
callq 0x2110
movq 0x38(%r13), %rax
movq -0x8(%rax), %rsi
leaq -0x80(%rbp), %rdi
callq 0x2140
movq 0x18(%r13), %rax
movq 0x10(%rax), %rdi
movq %rbx, %rsi
callq 0x5b7a
leaq -0x80(%rbp), %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2140
movq %rbx, %rdi
jmp 0x4b70
movq 0x5dad(%rip), %rdi      # 0xafd8
leaq 0x1fdd(%rip), %rsi      # 0x720f
callq 0x21d0
movq %rax, %rdi
callq 0x2120
testb $0x1, -0xa4(%rbp)
jne 0x490b
jmp 0x4991
addq $0x4a8, %rsp            # imm = 0x4A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5ac8
jmp 0x5ac8
movq %rax, %r15
leaq -0x290(%rbp), %rdi
callq 0x5c5e
jmp 0x5281
movq %rax, %r15
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5284
jmp 0x5acb
movq %rax, %r15
leaq -0x108(%rbp), %rax
jmp 0x52b9
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x1b8(%rbp)
jmp 0x52c5
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x1b8(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x52d3
jmp 0x5acb
jmp 0x5ac8
jmp 0x5ac8
movq %rax, %r15
jmp 0x598e
jmp 0x5ac8
movq %rax, %r15
leaq -0x128(%rbp), %rax
jmp 0x5323
movq %rax, %r15
jmp 0x53c1
movq %rax, %r15
jmp 0x534f
movq %rax, %r15
leaq -0x108(%rbp), %rax
movq %rax, -0x1c0(%rbp)
jmp 0x53e8
movq %rax, %r15
leaq -0x278(%rbp), %rdi
callq 0x5c5e
jmp 0x5376
movq %rax, %r15
leaq -0x2a8(%rbp), %rdi
callq 0x5c5e
movl $0x80, %ebx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5354
jmp 0x5acb
movq %rax, %r15
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5379
jmp 0x5b3d
movq %rax, %r15
movq -0x258(%rbp), %rax
jmp 0x53ba
movq %rax, %r15
leaq -0x108(%rbp), %rax
jmp 0x53ba
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x170(%rbp)
leaq -0x168(%rbp), %rbx
movq -0x170(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x53cf
jmp 0x5acb
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x1c0(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x53f6
jmp 0x5b3d
jmp 0x5ac8
jmp 0x5af0
jmp 0x5af0
movq %rax, %r15
leaq -0x2c0(%rbp), %rdi
callq 0x5c5e
jmp 0x542f
movq %rax, %r15
pushq $0x40
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5432
jmp 0x5b3d
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x230(%rbp)
jmp 0x5467
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x230(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x5475
jmp 0x5b3d
jmp 0x5ac8
jmp 0x5ada
jmp 0x5af0
jmp 0x5973
movq %rax, %r15
leaq -0x2f0(%rbp), %rdi
jmp 0x54f8
jmp 0x5a79
jmp 0x5ac8
movq %rax, %r15
leaq -0x2d8(%rbp), %rdi
jmp 0x5ae9
jmp 0x5ada
jmp 0x5ac8
jmp 0x5a79
jmp 0x5ac8
movq %rax, %r15
leaq -0x320(%rbp), %rdi
callq 0x5c5e
jmp 0x554e
jmp 0x5af0
movq %rax, %r15
leaq -0x338(%rbp), %rdi
callq 0x5c5e
jmp 0x5a7c
jmp 0x5973
jmp 0x5973
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x238(%rbp)
jmp 0x5522
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x238(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x5530
jmp 0x5b3d
movq %rax, %r15
jmp 0x557f
movq %rax, %r15
pushq $0x40
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5551
jmp 0x5b3d
movq %rax, %r15
leaq -0x398(%rbp), %rdi
callq 0x5c5e
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5582
jmp 0x5976
jmp 0x5ac8
jmp 0x56cf
jmp 0x55b7
jmp 0x5973
jmp 0x5973
movq %rax, %r15
leaq -0x198(%rbp), %rdi
jmp 0x5782
movq %rax, %r15
leaq -0x490(%rbp), %rdi
jmp 0x5782
jmp 0x5973
jmp 0x5ac8
movq %rax, %r15
jmp 0x5720
movq %rax, %r15
jmp 0x5751
jmp 0x56cf
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x240(%rbp)
jmp 0x561e
jmp 0x5973
movq %rax, %r15
leaq -0x4b0(%rbp), %rdi
jmp 0x5782
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x240(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x562c
jmp 0x5b3d
movq %rax, %r15
leaq -0x410(%rbp), %rdi
callq 0x5c5e
jmp 0x5671
jmp 0x5973
movq %rax, %r15
leaq -0x3e0(%rbp), %rdi
callq 0x5c5e
jmp 0x5696
jmp 0x5af0
movq %rax, %r15
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5674
jmp 0x5976
movq %rax, %r15
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5699
jmp 0x5976
jmp 0x56cf
jmp 0x5973
jmp 0x56de
jmp 0x5973
jmp 0x56ef
jmp 0x5973
jmp 0x56f9
movq %rax, %r15
leaq -0x168(%rbp), %rdi
jmp 0x5782
movq %rax, %r15
leaq -0x228(%rbp), %rdi
callq 0x2110
jmp 0x56fc
movq %rax, %r15
jmp 0x5708
jmp 0x5973
movq %rax, %r15
leaq -0x198(%rbp), %rdi
callq 0x2110
leaq -0x1e8(%rbp), %rdi
jmp 0x5782
movq %rax, %r15
leaq -0x368(%rbp), %rdi
callq 0x5c5e
pushq $0x40
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5723
jmp 0x5b3d
movq %rax, %r15
leaq -0x3b0(%rbp), %rdi
callq 0x5c5e
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5754
jmp 0x5976
jmp 0x5973
movq %rax, %r15
leaq -0x4d0(%rbp), %rdi
callq 0x2110
jmp 0x5976
jmp 0x5973
jmp 0x5973
movq %rax, %r15
leaq -0x3f8(%rbp), %rdi
callq 0x5c5e
jmp 0x57aa
movq %rax, %r15
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x57ad
jmp 0x5976
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x250(%rbp)
jmp 0x57e2
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x250(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x57f0
jmp 0x5976
movq %rax, %r15
leaq -0x108(%rbp), %rax
jmp 0x58ed
movq %rax, %r15
leaq -0x428(%rbp), %rdi
callq 0x5c5e
jmp 0x5829
movq %rax, %r15
pushq $0x40
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x582c
jmp 0x5976
jmp 0x5ada
movq %rax, %r15
leaq -0x3c8(%rbp), %rdi
callq 0x5c5e
jmp 0x5878
movq %rax, %r15
jmp 0x58ab
movq %rax, %r15
leaq -0x380(%rbp), %rdi
jmp 0x5ae9
movq %rax, %r15
pushq $0x40
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x587b
jmp 0x5976
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0x168(%rbp), %rbx
movq -0x248(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x58b9
jmp 0x5976
jmp 0x5af0
jmp 0x5ac8
jmp 0x5973
jmp 0x5973
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x1c8(%rbp)
jmp 0x58f9
movq %rax, %r15
leaq -0x168(%rbp), %rbx
movq -0x1c8(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x5907
jmp 0x5976
jmp 0x5af5
jmp 0x5af0
jmp 0x5aff
jmp 0x5aff
jmp 0x5afa
movq %rax, %r15
leaq -0x440(%rbp), %rdi
callq 0x5c5e
jmp 0x594c
jmp 0x5ada
movq %rax, %r15
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x594f
jmp 0x5b3d
jmp 0x5aff
movq %rax, %r15
leaq -0x208(%rbp), %rdi
callq 0x2110
leaq -0xa0(%rbp), %rdi
callq 0x2110
leaq -0xc8(%rbp), %rdi
jmp 0x5a83
jmp 0x5ac8
movq %rax, %r15
jmp 0x59bd
jmp 0x5a79
jmp 0x5ac8
movq %rax, %r15
leaq -0x308(%rbp), %rdi
callq 0x5c5e
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x59c0
jmp 0x5acb
movq %rax, %r15
leaq -0x458(%rbp), %rdi
callq 0x5c5e
jmp 0x5a4a
jmp 0x5af0
movq %rax, %r15
jmp 0x5a23
movq %rax, %r15
leaq -0x108(%rbp), %rax
jmp 0x5a1c
movq %rax, %r15
movq -0x260(%rbp), %rax
jmp 0x5a1c
movq %rax, %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x178(%rbp)
leaq -0x168(%rbp), %rbx
movq -0x178(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x2110
cmpq %rbx, %r14
jne 0x5a31
jmp 0x5b3d
movq %rax, %r15
movl $0x80, %ebx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5a4f
jmp 0x5b3d
jmp 0x5ac8
jmp 0x5ac8
jmp 0x5ac8
movq %rax, %r15
jmp 0x5a99
movq %rax, %r15
leaq -0x168(%rbp), %rdi
callq 0x2110
jmp 0x5acb
movq %rax, %r15
leaq -0x350(%rbp), %rdi
callq 0x5c5e
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x168, %rdi           # imm = 0xFE98
callq 0x2110
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x5a9c
jmp 0x5acb
jmp 0x5af0
jmp 0x5ada
movq %rax, %r15
leaq -0x470(%rbp), %rdi
jmp 0x5ae9
movq %rax, %r15
leaq -0x80(%rbp), %rdi
callq 0x2110
leaq -0x60(%rbp), %rdi
jmp 0x5b38
movq %rax, %r15
jmp 0x5b31
movq %rax, %r15
leaq -0x1b0(%rbp), %rdi
callq 0x5c5e
jmp 0x5b31
movq %rax, %r15
jmp 0x5b3d
movq %rax, %r15
jmp 0x5b1c
movq %rax, %r15
jmp 0x5b10
movq %rax, %r15
jmp 0x5b28
movq %rax, %r15
leaq -0x80(%rbp), %rdi
callq 0x2110
leaq -0xc8(%rbp), %rdi
callq 0x2110
leaq -0xa0(%rbp), %rdi
callq 0x2110
leaq -0x60(%rbp), %rdi
callq 0x2110
leaq -0x168(%rbp), %rdi
callq 0x2110
movq %r15, %rdi
callq 0x2330
nop