// File: /workspace/github_cpp_makefile_star2_O2/girdhari9[P]TEXPLORER/cmd_main.cpp
// Function: cmd_main(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void cmd_main(string current_path){
    mode = 0;
    re_init_setting();
    screen_point(cmd_mod_screen_start+3,0,0);
    cmd_arr_decl();
    while(1){    
        // clear_scr(cmd_mod_screen_start+3);
        cout<<">";
        fflush(stdout);
        fflush(stdin);
        string s;
        getline(cin, s);
        tokenized(s);
        if(v[0] == "help"){
            clear_cmd_scr();
            cout<<"You can perform operation using following commands:\n";
            cout<<"\nAll commands are case sensitive.\n";
            for(int i=0;i<=15;i++){
                cout<<cmd_name[i]<<cmd_work[i]<<"\n";
            }
            cout<<"Press ENTER to go back\n";
            getchar();
            screen_point(0,0,1);
            list_print(current_path,1,0);
            screen_point(cmd_mod_screen_start+3,0,0);
        }
        else if(v[0] == "about"){
            cout<<"TEXPLORER: Developed in 2018.\n";
            cout<<"Developer: Giridhari Lal Gupta\n";
            cout<<"Student @ IIITH : 2018201019\n";
        }
        else if(v[0] == "quit"){
            list_print(current_path,1,0);
            clear_scr(cmd_mod_screen_start+3);
            mode = 1;
            screen_point(0,0,0);
            fflush(stdout);
            pointer_move();
        }
        else if(v[0] == "clear"){
            list_print(current_path,1,0);
            clear_cmd_scr();
        }
        else if(v[0] == "copy"){
            int path = 0;
            for(unsigned int i = 1; i < v.size()-1; i++){
                path = set_path(current_path,i);
                if(path)
                    copy_file(source_path,dest_path);
            }
            if(path){ 
                list_print(current_path,1,0);
                screen_point(cmd_mod_screen_start+3,0,0);
                cout<<"File copied successfully!\n";
            }
            else
                cout<<v[0]<<": command syntax is not correct 'help' - to find correct syntax.\n";
        }
        else if(v[0] == "move"){
            int path = 0;
            for(unsigned int i = 1; i < v.size()-1; i++){
                path = set_path(current_path,i);
                if(path)
                    move_file(source_path,dest_path);
            }
            if(path){
                list_print(current_path,1,0);
                screen_point(cmd_mod_screen_start+3,0,0);
                cout<<"File moved successfully!\n";
            }
            else
                cout<<v[0]<<": command syntax is not correct 'help' - to find correct syntax.\n";
        }
        else if(v[0] == "copy_dir"){
            int path = 0;
            for(unsigned int i = 1; i < v.size()-1; i++){   
                path = set_path(current_path,i);
                if(path){
                    mkdir(dest_path.c_str(), S_IRUSR|S_IWUSR|S_IXUSR);
                    copy_dir(source_path,dest_path);
                }
            }
            if(path){
                list_print(current_path,1,0);
                screen_point(cmd_mod_screen_start+3,0,0);
                cout<<"Dirctory copied successfully!\n";
            }
            else
                cout<<v[0]<<": command syntax is not correct 'help' - to find correct syntax.\n";
        }
        else if(v[0] == "move_dir"){
            int path = 0;
            for(unsigned int i = 1; i < v.size()-1; i++){   
                //To set destination & source path
                path = set_path(current_path,i); 
                //To create directory
                if(path){
                    mkdir(dest_path.c_str(), S_IRUSR|S_IWUSR|S_IXUSR);
                    copy_dir(source_path,dest_path);
                    delete_dir(source_path);
                    rmdir(source_path.c_str());
                }
            }
            if(path){
                list_print(current_path,1,0);
                screen_point(cmd_mod_screen_start+3,0,0);
                cout<<"Directory moved successfully!\n";
            }
            else
                cout<<v[0]<<": command syntax is not correct 'help' - to find correct syntax.\n";
        }
        else if(v[0] == "rename"){
            string dest_path, source_path; 
                if(v[1][0] == '~') {
                    size_t found = v[1].find_last_of("/\\");
                    dest_path = home_path + "/" + v[1].substr(2,found-1) + v[2];
                    source_path = home_path + "/" + v[1].substr(2);
                }
                else {
                    size_t found = v[1].find_last_of("/\\");
                    if(found != string::npos)
                    dest_path = current_path + "/" + v[1].substr(0,found) + "/" + v[2];
                    else dest_path = current_path + "/" + v[2];
                    source_path = current_path + "/" + v[1];
                }
            rename(source_path.c_str(),dest_path.c_str());
            list_print(current_path,1,0);
            screen_point(cmd_mod_screen_start+3,0,0);
            cout<<"Renamed successfully!\n";
        }
        else if(v[0] == "delete_file"){
            string file_path,copy_file_path; 
            int status;
            if(v[1][0] == '~') file_path = home_path + "/" + v[1].substr(2);
            else file_path = current_path + "/" + v[1];

            if(v[1][0] == '~') {
                size_t found = v[1].find_last_of("/\\");
                copy_file_path = home_path + "/Trash" + v[1].substr(found);
            }
            else {
                size_t found = v[1].find_last_of("/\\");
                copy_file_path = home_path + "/Trash" + v[1].substr(found);
            }
            if(current_path == home_path + "/Trash"){
                status = unlink(file_path.c_str());
                if(!status)
                    cout<<"File deleted successfully!\n";
                else cout<<"Error: 'help' - to find correct syntax.\n";
            }
            else{
                size_t found = copy_file_path.find_last_of("/\\");
                trace_map[copy_file_path.substr(found+1)] = file_path;
                rename(file_path.c_str(),copy_file_path.c_str());
                list_print(current_path,1,0);
                screen_point(cmd_mod_screen_start+3,0,0);
                cout<<"Moved to trace!\n";
            }
            
        } 
        else if(v[0] == "restore"){
            string src_path = home_path + "/Trash/" + v[1];
            string file_path = trace_map[v[1]];
            move_file(src_path,file_path);
            list_print(current_path,1,0);
            screen_point(cmd_mod_screen_start+3,0,0);
            cout<<"File restored!\n";
        } 
        else if(v[0] == "delete_dir"){
            string directory_path; 
            if(v[1][0] == '~') directory_path = home_path + "/" + v[1].substr(2);
            else directory_path = current_path + "/" + v[1];
            delete_dir(directory_path);
            rmdir(directory_path.c_str());
            list_print(current_path,1,0);
            screen_point(cmd_mod_screen_start+3,0,0);
            cout<<"Dirctory deleted successfully!\n";
        }        
        else if(v[0] == "create_file"){
            string file_name;
            if(v[1][0] == '~'){
                cout<<v[0]<<": command syntax is not correct 'help' - to find correct syntax.\n";
            }
            else if(v[2][0] == '~') file_name = home_path + "/" + v[2].substr(2) + "/" + v[1];
            else file_name = current_path + "/" + v[2] + "/" + v[1];
            open(file_name.c_str(), O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
            list_print(current_path,1,0);
            screen_point(cmd_mod_screen_start+3,0,0);
            cout<<"file created successfully!\n";
        }
        /*Give first agrument as directory name which wants to create
        second arguments as where wants to create. Give '.' is wants to create 
        directory in current directory.*/
        else if(v[0] == "create_dir"){
            string file_name;
            if(v[1][0] == '~'){
                cout<<v[0]<<": command syntax is not correct 'help' - to find correct syntax.\n";
            }
            if(v[2][0] == '~'){
                file_name = home_path + "/" + v[2].substr(2) + "/" + v[1];
                mkdir(file_name.c_str(), S_IRUSR|S_IWUSR|S_IXUSR);
                cout<<"Directory created successfully!\n";
            }
            else{
                file_name = current_path + "/" + v[2] + "/" + v[1];
                mkdir(file_name.c_str(), S_IRUSR|S_IWUSR|S_IXUSR);
                cout<<"Directory created successfully!\n"; 
            }
        }  
        else if(v[0] == "goto"){
            string path_name;
            if(v[1][0] == '~')
                path_name = home_path + "/" + v[1].substr(2);
            else path_name = home_path + "/" + v[1];
            up = 0;
            screen_point(0,0,0);
            list_print(path_name,1,0);
            pointer_move();
        } 
        else if(v[0] == "search"){
            // search_v.push_back(current_path);
            search_file(current_path,v[1]);
            if(search_v.size()){
                print_search_file(search_v,v[1]);
                screen_point(search_v.size()-1,0,0);
                cmd_pointer_move(current_path,v[1]);
            }
            else{
                clear_cmd_scr();
                cout<<"No result found!\n";
            }
        } 
        else if(v[0] == "snapshot"){
            string path_name;
            if(v[1][0] == '~')
                path_name = home_path + v[1].substr(1);
            else path_name = current_path + "/" + v[1];
            FILE *file_pointer = fopen(v[2].c_str(),"w+");
            snapshot(path_name,file_pointer);
            fclose(file_pointer);
            cout<<"Snapshot Done! "<<v[2]<< " created in current Directory.\n";
        }
        else{   
            cout<<v[0]<<": command not found 'help' - to find correct command name.\n";
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x588, %rsp            # imm = 0x588
movq %rdi, (%rsp)
leaq 0x91e4(%rip), %r13      # 0xe260
andl $0x0, (%r13)
callq 0x4345
leaq 0x960f(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
callq 0x6edd
movq 0x8f29(%rip), %r14      # 0xdfd0
leaq 0xc8(%rsp), %r15
leaq 0x40a5(%rip), %r12      # 0x915b
movq %r14, %rdi
leaq 0x4784(%rip), %rsi      # 0x9844
callq 0x2230
movq 0x8ed4(%rip), %rax      # 0xdfa0
movq (%rax), %rdi
callq 0x22d0
movq 0x8ee5(%rip), %rax      # 0xdfc0
movq (%rax), %rdi
callq 0x22d0
leaq 0xd8(%rsp), %rax
movq %rax, 0xc8(%rsp)
andq $0x0, 0xd0(%rsp)
movb $0x0, 0xd8(%rsp)
movq 0x8ed5(%rip), %rdi      # 0xdfe0
movq %r15, %rsi
callq 0x2060
leaq 0x488(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x2360
leaq 0x488(%rsp), %r15
movq %r15, %rdi
callq 0x717f
movq %r15, %rdi
callq 0x2498
movq 0x9711(%rip), %rdi      # 0xe858
leaq 0x4033(%rip), %rsi      # 0x9181
callq 0x3629
testb %al, %al
je 0x51c1
callq 0x72b3
movq %r14, %rdi
leaq 0x4020(%rip), %rsi      # 0x9186
callq 0x2230
movq %r14, %rdi
leaq 0x4046(%rip), %rsi      # 0x91bb
callq 0x2230
xorl %r15d, %r15d
cmpq $0x200, %r15            # imm = 0x200
je 0x520e
leaq 0x970f(%rip), %rax      # 0xe8a0
leaq (%rax,%r15), %rsi
movq %r14, %rdi
callq 0x21f0
leaq 0x98fc(%rip), %rcx      # 0xeaa0
leaq (%rcx,%r15), %rsi
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
movq %r12, %rsi
callq 0x2230
addq $0x20, %r15
jmp 0x517d
movq 0x9690(%rip), %rdi      # 0xe858
leaq 0x4027(%rip), %rsi      # 0x91f6
callq 0x3629
testb %al, %al
je 0x5276
movq %r14, %rdi
leaq 0x4016(%rip), %rsi      # 0x91fc
callq 0x2230
movq %r14, %rdi
leaq 0x4026(%rip), %rsi      # 0x921b
callq 0x2230
movq %r14, %rdi
leaq 0x4037(%rip), %rsi      # 0x923b
callq 0x2230
jmp 0x6182
movq %r14, %rdi
leaq 0x3fc6(%rip), %rsi      # 0x91de
callq 0x2230
callq 0x2370
xorl %edi, %edi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x2ac4
leaq 0x468(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x468(%rsp), %r15
movq %r15, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %r15, %rdi
callq 0x2498
leaq 0x9439(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
jmp 0x6182
movq 0x95db(%rip), %rdi      # 0xe858
leaq 0x3fd5(%rip), %rsi      # 0x9259
callq 0x3629
testb %al, %al
je 0x52f8
leaq 0x448(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x448(%rsp), %r15
movq %r15, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %r15, %rdi
callq 0x2498
leaq 0x93da(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
callq 0x2cc5
movl $0x1, (%r13)
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq 0x8cba(%rip), %rax      # 0xdfa0
movq (%rax), %rdi
callq 0x22d0
callq 0x3cd0
jmp 0x6182
movq 0x9559(%rip), %rdi      # 0xe858
leaq 0x3f58(%rip), %rsi      # 0x925e
callq 0x3629
testb %al, %al
je 0x5347
leaq 0x428(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x428(%rsp), %r15
movq %r15, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %r15, %rdi
callq 0x2498
callq 0x72b3
jmp 0x6182
movq 0x950a(%rip), %rdi      # 0xe858
leaq 0x3f0f(%rip), %rsi      # 0x9264
callq 0x3629
testb %al, %al
je 0x5417
xorl %r13d, %r13d
pushq $0x1
popq %r15
movl %r15d, %eax
movq 0x94ed(%rip), %rcx      # 0xe860
movq 0x94de(%rip), %rsi      # 0xe858
subq %rsi, %rcx
sarq $0x5, %rcx
decq %rcx
cmpq %rax, %rcx
jbe 0x54e7
leaq 0x408(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x408(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
callq 0x72e3
movl %eax, %r13d
movq %rbp, %rdi
callq 0x2498
testl %r13d, %r13d
je 0x540f
leaq 0x3e8(%rsp), %rdi
leaq 0x98f0(%rip), %rsi      # 0xecc0
callq 0x2360
leaq 0x568(%rsp), %rbx
movq %rbx, %rdi
leaq 0x98b9(%rip), %rsi      # 0xeca0
callq 0x2360
leaq 0x3e8(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x44ec
movq %rbx, %rdi
callq 0x2498
movq %rbp, %rdi
callq 0x2498
incl %r15d
jmp 0x5369
movq 0x943a(%rip), %rdi      # 0xe858
leaq 0x3ea1(%rip), %rsi      # 0x92c6
callq 0x3629
testb %al, %al
je 0x5549
xorl %r13d, %r13d
pushq $0x1
popq %r15
movl %r15d, %eax
movq 0x941d(%rip), %rcx      # 0xe860
movq 0x940e(%rip), %rsi      # 0xe858
subq %rsi, %rcx
sarq $0x5, %rcx
decq %rcx
cmpq %rax, %rcx
jbe 0x562a
leaq 0x3a8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x3a8(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x72e3
movl %eax, %r13d
movq %rbx, %rdi
callq 0x2498
testl %r13d, %r13d
je 0x54df
leaq 0x388(%rsp), %rdi
leaq 0x9820(%rip), %rsi      # 0xecc0
callq 0x2360
leaq 0x548(%rsp), %rbp
movq %rbp, %rdi
leaq 0x97e9(%rip), %rsi      # 0xeca0
callq 0x2360
leaq 0x388(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x4552
movq %rbp, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
incl %r15d
jmp 0x5439
testl %r13d, %r13d
je 0x568c
leaq 0x3c8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x8d58(%rip), %r13      # 0xe260
leaq 0x3c8(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x9170(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rax
leaq 0x3d25(%rip), %rsi      # 0x9269
jmp 0x56a2
movq 0x9308(%rip), %rdi      # 0xe858
leaq 0x3d8e(%rip), %rsi      # 0x92e5
callq 0x3629
testb %al, %al
je 0x56af
xorl %r13d, %r13d
pushq $0x1
popq %r15
movl %r15d, %eax
movq 0x92eb(%rip), %rcx      # 0xe860
movq 0x92dc(%rip), %rsi      # 0xe858
subq %rsi, %rcx
sarq $0x5, %rcx
decq %rcx
cmpq %rax, %rcx
jbe 0x57cc
leaq 0x348(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x348(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x72e3
movl %eax, %r13d
movq %rbx, %rdi
callq 0x2498
testl %r13d, %r13d
je 0x5622
movq 0x96d6(%rip), %rdi      # 0xeca0
movl $0x1c0, %esi            # imm = 0x1C0
callq 0x2110
leaq 0x328(%rsp), %rdi
leaq 0x96dd(%rip), %rsi      # 0xecc0
callq 0x2360
leaq 0x528(%rsp), %rbp
movq %rbp, %rdi
leaq 0x96a6(%rip), %rsi      # 0xeca0
callq 0x2360
leaq 0x328(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x45c8
movq %rbp, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
incl %r15d
jmp 0x556b
testl %r13d, %r13d
je 0x582e
leaq 0x368(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x8c15(%rip), %r13      # 0xe260
leaq 0x368(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x902d(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rax
leaq 0x3c44(%rip), %rsi      # 0x92cb
jmp 0x5844
movq %r14, %rdi
callq 0x21f0
leaq 0x8bc5(%rip), %r13      # 0xe260
leaq 0x3be2(%rip), %rsi      # 0x9284
movq %rax, %rdi
callq 0x2230
jmp 0x6182
movq 0x91a2(%rip), %rdi      # 0xe858
leaq 0x3c50(%rip), %rsi      # 0x930d
callq 0x3629
testb %al, %al
je 0x5851
xorl %r13d, %r13d
pushq $0x1
popq %r15
movl %r15d, %eax
movq 0x9185(%rip), %rcx      # 0xe860
movq 0x9176(%rip), %rsi      # 0xe858
subq %rsi, %rcx
sarq $0x5, %rcx
decq %rcx
cmpq %rax, %rcx
jbe 0x59d8
leaq 0x2e8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x2e8(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x72e3
movl %eax, %r13d
movq %rbx, %rdi
callq 0x2498
testl %r13d, %r13d
je 0x57c4
movq 0x956c(%rip), %rdi      # 0xeca0
movl $0x1c0, %esi            # imm = 0x1C0
callq 0x2110
leaq 0x2c8(%rsp), %rdi
leaq 0x9573(%rip), %rsi      # 0xecc0
callq 0x2360
leaq 0x508(%rsp), %rbp
movq %rbp, %rdi
leaq 0x953c(%rip), %rsi      # 0xeca0
callq 0x2360
leaq 0x2c8(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x45c8
movq %rbp, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x2a8(%rsp), %rdi
leaq 0x9525(%rip), %rsi      # 0xecc0
callq 0x2360
leaq 0x2a8(%rsp), %rbx
movq %rbx, %rdi
callq 0x48d7
movq %rbx, %rdi
callq 0x2498
movq 0x9501(%rip), %rdi      # 0xecc0
callq 0x20e0
incl %r15d
jmp 0x56d1
testl %r13d, %r13d
je 0x5a3a
leaq 0x308(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x8a73(%rip), %r13      # 0xe260
leaq 0x308(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x8e8b(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rax
leaq 0x3ac5(%rip), %rsi      # 0x92ee
jmp 0x5a50
movq %r14, %rdi
callq 0x21f0
leaq 0x8a23(%rip), %r13      # 0xe260
leaq 0x3a40(%rip), %rsi      # 0x9284
movq %rax, %rdi
callq 0x2230
jmp 0x6182
movq 0x9000(%rip), %rdi      # 0xe858
leaq 0x3ad6(%rip), %rsi      # 0x9335
callq 0x3629
testb %al, %al
je 0x5a5d
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
xorl %eax, %eax
movb %al, 0x18(%rsp)
leaq 0x58(%rsp), %rcx
movq %rcx, 0x48(%rsp)
andq $0x0, 0x50(%rsp)
movb %al, 0x58(%rsp)
movq 0x8fbb(%rip), %rdi      # 0xe858
movq 0x20(%rdi), %rax
addq $0x20, %rdi
movb (%rax), %r13b
leaq 0x37d1(%rip), %rsi      # 0x9080
pushq $-0x1
popq %rdx
callq 0x2210
movq %rax, %r15
cmpb $0x7e, %r13b
jne 0x5b4f
leaq 0x88(%rsp), %rdi
leaq 0x8da5(%rip), %rsi      # 0xe678
leaq 0x3864(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x8f72(%rip), %rsi      # 0xe858
addq $0x20, %rsi
decq %r15
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
pushq $0x2
popq %rdx
movq %r15, %rcx
callq 0x2270
leaq 0x8956(%rip), %r13      # 0xe260
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x88(%rsp), %rsi
movq %rbx, %rdx
callq 0x7b89
movq 0x8f2f(%rip), %rdx      # 0xe858
addq $0x40, %rdx
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2300
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
callq 0x2498
leaq 0xa8(%rsp), %rdi
callq 0x2498
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
leaq 0x8cf7(%rip), %rsi      # 0xe678
leaq 0x37b6(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x8ec4(%rip), %rsi      # 0xe858
addq $0x20, %rsi
movq %rbx, %rdi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x68(%rsp), %rbp
movq %rbp, %rdi
leaq 0x28(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x7b89
leaq 0x48(%rsp), %rdi
movq %rbp, %rsi
callq 0x2300
movq %rbp, %rdi
callq 0x2498
jmp 0x60fd
testl %r13d, %r13d
je 0x5b2c
leaq 0x288(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x8867(%rip), %r13      # 0xe260
leaq 0x288(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x8c7f(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rax
leaq 0x38e1(%rip), %rsi      # 0x9316
jmp 0x5b42
movq %r14, %rdi
callq 0x21f0
leaq 0x8817(%rip), %r13      # 0xe260
leaq 0x3834(%rip), %rsi      # 0x9284
movq %rax, %rdi
callq 0x2230
jmp 0x6182
movq 0x8df4(%rip), %rdi      # 0xe858
leaq 0x38e8(%rip), %rsi      # 0x9353
callq 0x3629
testb %al, %al
je 0x5c29
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
xorl %eax, %eax
movb %al, 0x18(%rsp)
leaq 0x58(%rsp), %rcx
movq %rcx, 0x48(%rsp)
andq $0x0, 0x50(%rsp)
movb %al, 0x58(%rsp)
movq 0x8daf(%rip), %rax      # 0xe858
movq 0x20(%rax), %rax
cmpb $0x7e, (%rax)
jne 0x5d42
leaq 0x28(%rsp), %rdi
leaq 0x8bb6(%rip), %rsi      # 0xe678
leaq 0x3675(%rip), %rdx      # 0x913e
callq 0x36d3
leaq 0x68(%rsp), %r13
movq 0x8d7e(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
movq %r13, %rdi
leaq 0x28(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x7b89
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x2300
movq %r13, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
jmp 0x5d8d
movq %r14, %rdi
callq 0x21f0
leaq 0x8725(%rip), %r13      # 0xe260
leaq 0x3742(%rip), %rsi      # 0x9284
movq %rax, %rdi
callq 0x2230
jmp 0x6182
cmpq $-0x1, %r15
je 0x606b
leaq 0xa8(%rsp), %rdi
movq (%rsp), %rsi
leaq 0x35d2(%rip), %rdx      # 0x913e
callq 0x36d3
leaq 0x86e8(%rip), %r13      # 0xe260
movq 0x8cd9(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x268(%rsp), %rbp
movq %rbp, %rdi
xorl %edx, %edx
movq %r15, %rcx
callq 0x2270
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
leaq 0xa8(%rsp), %rsi
movq %rbp, %rdx
callq 0x7b89
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
leaq 0x3579(%rip), %rdx      # 0x913e
callq 0x36b4
movq 0x8c87(%rip), %rdx      # 0xe858
addq $0x40, %rdx
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2300
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
callq 0x2498
leaq 0x88(%rsp), %rdi
callq 0x2498
leaq 0x268(%rsp), %rdi
callq 0x2498
leaq 0xa8(%rsp), %rdi
jmp 0x60bd
movq 0x8c28(%rip), %rdi      # 0xe858
leaq 0x3785(%rip), %rsi      # 0x93bc
callq 0x3629
testb %al, %al
je 0x5e1d
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
leaq 0x8a25(%rip), %rsi      # 0xe678
leaq 0x34de(%rip), %rdx      # 0x9138
callq 0x36d3
movq 0x8bf2(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x365f
movq %rbx, %rdi
callq 0x2498
movq 0x8bd2(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x8bdf(%rip), %rdi      # 0xe870
callq 0x7c56
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2360
leaq 0x208(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2360
leaq 0x4e8(%rsp), %r15
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x2360
leaq 0x208(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4552
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x1e8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x1e8(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x897c(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rdi
leaq 0x368c(%rip), %rsi      # 0x93c4
callq 0x2230
jmp 0x616e
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
movq (%rsp), %rsi
leaq 0x33e9(%rip), %rdx      # 0x913e
callq 0x36d3
leaq 0x68(%rsp), %r15
movq 0x8af2(%rip), %rdx      # 0xe858
addq $0x20, %rdx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
movq 0x8abf(%rip), %rdi      # 0xe858
movq 0x20(%rdi), %rax
addq $0x20, %rdi
movb (%rax), %r13b
leaq 0x32d5(%rip), %rsi      # 0x9080
pushq $-0x1
popq %rdx
callq 0x2210
movq %rax, %r15
cmpb $0x7e, %r13b
jne 0x5ed9
leaq 0x28(%rsp), %rdi
leaq 0x88ac(%rip), %rsi      # 0xe678
leaq 0x358c(%rip), %rdx      # 0x935f
callq 0x36d3
leaq 0x8481(%rip), %r13      # 0xe260
movq 0x8a72(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x68(%rsp), %rbp
movq %rbp, %rdi
leaq 0x28(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x7b89
jmp 0x5f31
movq 0x8a34(%rip), %rdi      # 0xe858
leaq 0x35a9(%rip), %rsi      # 0x93d4
callq 0x3629
testb %al, %al
je 0x6197
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x8a04(%rip), %rax      # 0xe858
movq 0x20(%rax), %rax
cmpb $0x7e, (%rax)
jne 0x61f7
leaq 0x68(%rsp), %rdi
leaq 0x880b(%rip), %rsi      # 0xe678
leaq 0x32ca(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x89d8(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x28(%rsp), %rbp
movq %rbp, %rdi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
leaq 0x68(%rsp), %r15
movq %r15, %rsi
movq %rbp, %rdx
callq 0x7b89
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x2300
movq %rbx, %rdi
callq 0x2498
leaq 0x28(%rsp), %rdi
callq 0x2498
movq %r15, %rdi
jmp 0x6245
leaq 0x28(%rsp), %rdi
leaq 0x8793(%rip), %rsi      # 0xe678
leaq 0x3473(%rip), %rdx      # 0x935f
callq 0x36d3
leaq 0x8368(%rip), %r13      # 0xe260
movq 0x8959(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x68(%rsp), %rbp
movq %rbp, %rdi
leaq 0x28(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x7b89
leaq 0x48(%rsp), %rdi
movq %rbp, %rsi
callq 0x2300
movq %rbp, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
callq 0x2498
movq %rbp, %rdi
leaq 0x8718(%rip), %rsi      # 0xe678
leaq 0x33f8(%rip), %rdx      # 0x935f
callq 0x36d3
movq (%rsp), %rdi
movq %rbp, %rsi
callq 0x3636
movl %eax, %r15d
movq %rbp, %rdi
callq 0x2498
testb %r15b, %r15b
je 0x5fb3
movq 0x8(%rsp), %rdi
callq 0x2120
testl %eax, %eax
leaq 0x33e7(%rip), %rsi      # 0x9382
leaq 0x33c4(%rip), %rax      # 0x9366
cmoveq %rax, %rsi
movq %r14, %rdi
callq 0x2230
jmp 0x616e
leaq 0x48(%rsp), %r15
movq %r15, %rdi
leaq 0x30be(%rip), %rsi      # 0x9080
pushq $-0x1
popq %rbx
movq %rbx, %rdx
callq 0x2210
leaq 0x1(%rax), %rdx
movq %rbp, %rdi
movq %r15, %rsi
movq %rbx, %rcx
callq 0x2270
leaq 0x888a(%rip), %rdi      # 0xe870
movq %rbp, %rsi
callq 0x7bf0
movq %rax, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2150
leaq 0x68(%rsp), %rdi
callq 0x2498
movq 0x8(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x2170
leaq 0x228(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x228(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x8653(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rdi
leaq 0x334a(%rip), %rsi      # 0x93ab
callq 0x2230
jmp 0x616e
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq (%rsp), %rsi
leaq 0x30c0(%rip), %rdx      # 0x913e
callq 0x36d3
leaq 0x81d6(%rip), %r13      # 0xe260
movq 0x87c7(%rip), %rdx      # 0xe858
addq $0x40, %rdx
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x2300
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
callq 0x2498
movq %r15, %rdi
movq (%rsp), %rsi
leaq 0x306e(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x877c(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x365f
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x2300
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
callq 0x2498
movq 0x48(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x2170
leaq 0x248(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x248(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x854b(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rdi
leaq 0x31d3(%rip), %rsi      # 0x933c
callq 0x2230
leaq 0x48(%rsp), %rdi
callq 0x2498
leaq 0x8(%rsp), %rdi
callq 0x2498
leaq 0xc8(%rsp), %r15
movq %r15, %rdi
callq 0x2498
jmp 0x50b6
movq 0x86ba(%rip), %rdi      # 0xe858
leaq 0x325a(%rip), %rsi      # 0x93ff
callq 0x3629
testb %al, %al
je 0x62d3
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x868a(%rip), %rsi      # 0xe858
movq 0x20(%rsi), %rax
cmpb $0x7e, (%rax)
jne 0x63f8
movq %r14, %rdi
callq 0x21f0
movq %rax, %rdi
leaq 0x3097(%rip), %rsi      # 0x9284
callq 0x2230
jmp 0x6612
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq (%rsp), %rsi
leaq 0x2f34(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x8642(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x1c8(%rsp), %rdi
movq %rbp, %rsi
callq 0x2360
leaq 0x1c8(%rsp), %rbx
movq %rbx, %rdi
callq 0x48d7
movq %rbx, %rdi
callq 0x2498
movq 0x8(%rsp), %rdi
callq 0x20e0
leaq 0x1a8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x1a8(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x83eb(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rdi
leaq 0x3116(%rip), %rsi      # 0x93df
callq 0x2230
jmp 0x6178
movq 0x857e(%rip), %rdi      # 0xe858
leaq 0x3146(%rip), %rsi      # 0x9427
callq 0x3629
testb %al, %al
je 0x64bf
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x854e(%rip), %rsi      # 0xe858
movq 0x20(%rsi), %rax
cmpb $0x7e, (%rax)
jne 0x6331
movq %r14, %rdi
callq 0x21f0
movq %rax, %rdi
leaq 0x2f5f(%rip), %rsi      # 0x9284
callq 0x2230
movq 0x8527(%rip), %rsi      # 0xe858
movq 0x40(%rsi), %rax
cmpb $0x7e, (%rax)
jne 0x679a
leaq 0x88(%rsp), %rdi
leaq 0x832b(%rip), %rsi      # 0xe678
leaq 0x2dea(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x84f8(%rip), %rsi      # 0xe858
addq $0x40, %rsi
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x88(%rsp), %rsi
movq %rbx, %rdx
callq 0x7b89
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x2d9a(%rip), %rdx      # 0x913e
callq 0x36b4
movq 0x84a8(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x28(%rsp), %rdi
callq 0x2498
leaq 0xa8(%rsp), %rdi
jmp 0x6824
movq 0x40(%rsi), %rax
cmpb $0x7e, (%rax)
jne 0x6576
leaq 0x88(%rsp), %rdi
leaq 0x8264(%rip), %rsi      # 0xe678
leaq 0x2d23(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x8431(%rip), %rsi      # 0xe858
addq $0x40, %rsi
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x88(%rsp), %rsi
movq %rbx, %rdx
callq 0x7b89
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x2cd3(%rip), %rdx      # 0x913e
callq 0x36b4
movq 0x83e1(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x28(%rsp), %rdi
callq 0x2498
leaq 0xa8(%rsp), %rdi
jmp 0x6600
movq 0x8392(%rip), %rdi      # 0xe858
leaq 0x2f86(%rip), %rsi      # 0x9453
callq 0x3629
testb %al, %al
je 0x667d
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x8362(%rip), %rax      # 0xe858
movq 0x20(%rax), %rax
cmpb $0x7e, (%rax)
jne 0x6859
leaq 0x68(%rsp), %rdi
leaq 0x8169(%rip), %rsi      # 0xe678
leaq 0x2c28(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x8336(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
pushq $0x2
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x48(%rsp), %rbp
movq %rbp, %rdi
leaq 0x68(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x7b89
leaq 0x8(%rsp), %rdi
movq %rbp, %rsi
callq 0x2300
movq %rbp, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
jmp 0x68a7
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
movq (%rsp), %rsi
leaq 0x2bb2(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x82c0(%rip), %rdx      # 0xe858
addq $0x40, %rdx
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x2b80(%rip), %rdx      # 0x913e
callq 0x36b4
movq 0x828e(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x28(%rsp), %rdi
callq 0x2498
leaq 0x88(%rsp), %rdi
callq 0x2498
movq 0x8(%rsp), %rdi
pushq $0x41
popq %rsi
movl $0x180, %edx            # imm = 0x180
xorl %eax, %eax
callq 0x21a0
leaq 0x188(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
leaq 0x188(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
leaq 0x8041(%rip), %rax      # 0xe69c
movl (%rax), %edi
addl $0x3, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
movq %r14, %rdi
leaq 0x2d98(%rip), %rsi      # 0x940b
callq 0x2230
jmp 0x6178
movq 0x81d4(%rip), %rdi      # 0xe858
leaq 0x2dcd(%rip), %rsi      # 0x9458
callq 0x3629
testb %al, %al
je 0x68fa
leaq 0x148(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
movq 0x81a8(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x4c8(%rsp), %r15
movq %r15, %rdi
callq 0x2360
leaq 0x148(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a18
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x812a(%rip), %rcx      # 0xe818
movq 0x8(%rcx), %rax
cmpq (%rcx), %rax
je 0x6984
movq 0x8156(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x128(%rsp), %rdi
callq 0x2360
leaq 0x80fe(%rip), %rbx      # 0xe818
movq %rbx, %rdi
leaq 0x128(%rsp), %r15
movq %r15, %rsi
callq 0x4cb2
movq %r15, %rdi
callq 0x2498
movq 0x8(%rbx), %rdi
subq (%rbx), %rdi
shrq $0x5, %rdi
decl %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
leaq 0x108(%rsp), %rdi
movq (%rsp), %rsi
callq 0x2360
movq 0x80f5(%rip), %rsi      # 0xe858
addq $0x20, %rsi
leaq 0x4a8(%rsp), %r15
movq %r15, %rdi
callq 0x2360
leaq 0x108(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x78e6
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
jmp 0x617d
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
movq (%rsp), %rsi
leaq 0x298e(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x809c(%rip), %rdx      # 0xe858
addq $0x40, %rdx
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
leaq 0x295c(%rip), %rdx      # 0x913e
callq 0x36b4
movq 0x806a(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x28(%rsp), %rdi
callq 0x2498
leaq 0x88(%rsp), %rdi
callq 0x2498
movq 0x8(%rsp), %rdi
movl $0x1c0, %esi            # imm = 0x1C0
callq 0x2110
movq %r14, %rdi
leaq 0x2be3(%rip), %rsi      # 0x9432
callq 0x2230
jmp 0x6178
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7e10(%rip), %rsi      # 0xe678
leaq 0x28cf(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x7fdd(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
leaq 0x7ecd(%rip), %rax      # 0xe780
andl $0x0, (%rax)
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2ac4
leaq 0x168(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2360
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x2da8
movq %rbx, %rdi
callq 0x2498
callq 0x3cd0
jmp 0x6178
movq 0x7f57(%rip), %rdi      # 0xe858
leaq 0x2b69(%rip), %rsi      # 0x9471
callq 0x3629
testb %al, %al
je 0x6966
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
andq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x7f2b(%rip), %rsi      # 0xe858
movq 0x20(%rsi), %rax
cmpb $0x7e, (%rax)
jne 0x6998
addq $0x20, %rsi
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
pushq $0x1
popq %rdx
pushq $-0x1
popq %rcx
callq 0x2270
leaq 0x48(%rsp), %r15
movq %r15, %rdi
leaq 0x7d1c(%rip), %rsi      # 0xe678
movq %rbx, %rdx
callq 0x7cbc
jmp 0x69cb
movq 0x7eeb(%rip), %rsi      # 0xe858
movq %r14, %rdi
callq 0x21f0
movq %rax, %rdi
leaq 0x2b2e(%rip), %rsi      # 0x94ad
jmp 0x5204
callq 0x72b3
movq %r14, %rdi
leaq 0x2acc(%rip), %rsi      # 0x945f
jmp 0x5204
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
movq (%rsp), %rsi
leaq 0x2793(%rip), %rdx      # 0x913e
callq 0x36d3
movq 0x7ea1(%rip), %rdx      # 0xe858
addq $0x20, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x365f
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x2300
movq %r15, %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2498
movq 0x7e66(%rip), %rax      # 0xe858
movq 0x40(%rax), %rdi
leaq 0x2a7d(%rip), %rsi      # 0x947a
callq 0x22e0
movq %rax, %r15
leaq 0xe8(%rsp), %rdi
movq %rbp, %rsi
callq 0x2360
leaq 0xe8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4b60
movq %rbx, %rdi
callq 0x2498
movq %r15, %rdi
callq 0x2240
movq %r14, %rdi
leaq 0x2a3b(%rip), %rsi      # 0x947d
callq 0x2230
movq 0x7e0a(%rip), %rsi      # 0xe858
addq $0x40, %rsi
movq %rax, %rdi
callq 0x21f0
movq %rax, %rdi
leaq 0x2a29(%rip), %rsi      # 0x948d
callq 0x2230
jmp 0x6178
jmp 0x6bb1
jmp 0x6bb1
jmp 0x6d02
jmp 0x6d02
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
jmp 0x6d70
movq %rax, %rbx
leaq 0x4a8(%rsp), %rdi
callq 0x2498
jmp 0x6ab7
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
jmp 0x6eba
jmp 0x6bb1
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
callq 0x2498
jmp 0x6ae3
jmp 0x6bb1
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
jmp 0x6eba
jmp 0x6b96
jmp 0x6d02
jmp 0x6d02
jmp 0x6d02
jmp 0x6b0b
jmp 0x6d02
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x2498
jmp 0x6b68
jmp 0x6b56
jmp 0x6d02
jmp 0x6d02
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
jmp 0x6d70
jmp 0x6b41
jmp 0x6d02
jmp 0x6b56
jmp 0x6b5b
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x2498
jmp 0x6b5e
jmp 0x6b56
jmp 0x6b65
jmp 0x6b74
movq %rax, %rbx
jmp 0x6b84
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x6b7f
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x2498
jmp 0x6b77
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x2498
leaq 0x88(%rsp), %rdi
jmp 0x6d70
jmp 0x6d02
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x2498
jmp 0x6bb4
jmp 0x6d02
jmp 0x6bb1
jmp 0x6d02
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0x6d70
jmp 0x6d02
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
jmp 0x6d70
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
jmp 0x6d70
movq %rax, %rbx
leaq 0x1c8(%rsp), %rdi
jmp 0x6d70
jmp 0x6cd0
jmp 0x6d68
jmp 0x6d68
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
jmp 0x6d3f
jmp 0x6d68
movq %rax, %rbx
leaq 0x4e8(%rsp), %rdi
callq 0x2498
jmp 0x6c3e
jmp 0x6ec5
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
jmp 0x6d3f
jmp 0x6d68
jmp 0x6cd0
jmp 0x6ceb
jmp 0x6cd0
jmp 0x6d68
jmp 0x6cd0
jmp 0x6d68
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
jmp 0x6d3f
jmp 0x6cd0
jmp 0x6ceb
jmp 0x6ceb
jmp 0x6d68
jmp 0x6d68
movq %rax, %rbx
jmp 0x6cab
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x2498
jmp 0x6c9e
jmp 0x6d02
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x2498
leaq 0x268(%rsp), %rdi
callq 0x2498
jmp 0x6cbd
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
jmp 0x6d3f
jmp 0x6d68
jmp 0x6cd0
jmp 0x6d02
movq %rax, %rbx
jmp 0x6cfb
jmp 0x6d68
movq %rax, %rbx
jmp 0x6d28
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0x6d3f
jmp 0x6d68
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x2498
leaq 0x28(%rsp), %rdi
jmp 0x6d3f
movq %rax, %rbx
jmp 0x6d75
jmp 0x6d68
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x2498
jmp 0x6d1b
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x2498
leaq 0x88(%rsp), %rdi
jmp 0x6d3f
jmp 0x6d68
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
callq 0x2498
jmp 0x6d6b
jmp 0x6d68
movq %rax, %rbx
leaq 0x288(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x308(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x2498
leaq 0x8(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x368(%rsp), %rdi
jmp 0x6eba
jmp 0x6ec5
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
jmp 0x6eba
jmp 0x6ec5
jmp 0x6ec5
movq %rax, %rbx
leaq 0x428(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
callq 0x2498
jmp 0x6dd3
movq %rax, %rbx
leaq 0x2c8(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x2a8(%rsp), %rdi
jmp 0x6eba
jmp 0x6ec5
movq %rax, %rbx
leaq 0x2e8(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x448(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x528(%rsp), %rdi
callq 0x2498
jmp 0x6e2a
movq %rax, %rbx
leaq 0x328(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x348(%rsp), %rdi
jmp 0x6eba
jmp 0x6ec5
movq %rax, %rbx
jmp 0x6e5b
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
callq 0x2498
leaq 0x388(%rsp), %rdi
jmp 0x6eba
jmp 0x6ec5
movq %rax, %rbx
leaq 0x3a8(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x468(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x568(%rsp), %rdi
callq 0x2498
jmp 0x6e96
movq %rax, %rbx
leaq 0x3e8(%rsp), %rdi
jmp 0x6eba
jmp 0x6ec5
movq %rax, %rbx
leaq 0x408(%rsp), %rdi
jmp 0x6eba
movq %rax, %rbx
leaq 0x488(%rsp), %rdi
callq 0x2498
jmp 0x6ec8
jmp 0x6ec5
jmp 0x6ec5
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x2498
movq %rbx, %rdi
callq 0x2420