// File: /workspace/github_c_makefile_star2_O2/coyove[P]chann/./src/main.cpp
// Function: actions::admin::call(mg_connection*)
void call(struct mg_connection *conn){
            if(conn->content_len <= 0){
                views::info::render(conn, "Error");
                return;
            }
            char action_name[32] = {0}, action_param1[32] = {0}, action_param2[32] = {0};
            string action, param1, param2;

            mg_get_var(conn, "action_name", action_name, sizeof(action_name)); action = string(action_name);
            mg_get_var(conn, "action_1", action_param1, sizeof(action_param1)); param1 = string(action_param1);
            mg_get_var(conn, "action_2", action_param2, sizeof(action_param2)); param2 = string(action_param2);

            if(action == ""){
                views::info::render(conn, "Error");
                return;
            }
            
            #define HAS_KEY(x) x == action
            string ret = "Action completed.";

            if(HAS_KEY("login")){
                string new_name = cc_random_username();
                string ssid = cck_create_ssid(new_name);

                if(param1 == configs.global().get("security::admin::username") &&
                    param2 == configs.global().get("security::admin::password") /*&& param1 == "admin" */){
                    cck_send_admin_ssid(conn, ssid);
                    admin_cookie = ssid;
                    logLog("Admin (%s) has logined", cc_get_client_ip(conn));
                }else{
                    string pwd = configs.global().get("security::assist::" + param1 + "::password");
                    if(!pwd.empty() && param2 == pwd){
                        cck_send_admin_ssid(conn, ssid, "assist");
                        assist_cookie[param1] = ssid;
                        logLog("Assist %s (%s) has logined", param1.c_str(), cc_get_client_ip(conn));    
                    }
                }
            }

            string aid = "";
            if(is_admin(conn)) {
                aid = "admin";
            }else{
                aid = is_assist(conn);
                if(aid.empty()){
                    views::info::render(conn, templates.invoke("misc").toggle("try_to_usurp").build_destory().c_str());
                    check_ip(conn, true);
                    return;
                }
            }

            #define ASSIST(x) configs.global().get<bool>("security::assist::" + aid + "::" + x)
            if(HAS_KEY("quit-admin")) {
                admin_cookie = cc_random_username(); 
                ret = "admin quitted.";
            }

            if(HAS_KEY("quit-assist")) {
                assist_cookie[aid] = cc_random_username(); 
                ret = aid + " quitted.";
            }
            
            if(HAS_KEY("delete-thread")){
                if(aid == "admin" || ASSIST("delete"))
                    actions::kill::call(conn, atol(param1.c_str()), true);
                else
                    ret = "Access denied.";
            }

            if(HAS_KEY("update") && aid == "admin"){
            	configs.global().try_set(param1, param2);
            }

            if(HAS_KEY("new-state") && !param1.empty()){
                if(aid == "admin" || ASSIST("change_state")){
                    int id = atol(param1.c_str());

                    struct Thread * t = unq_read_thread(pDb, id);
                    t->state = atol(param2.c_str());
                    unq_write_thread(pDb, t->threadID, t, true);

                    ret += (" New state: " + unq_resolve_state(t->state));
                    delete t;
                }else
                    ret = "Access denied.";
            }

            if(HAS_KEY("ban")){
                if(aid == "admin" || ASSIST("ban")){
                    string id = param1;
                    unordered_set<string>& xlist = (param2 == "ip") ? IPBanList : IDBanList;

                    auto iter = xlist.find(id);
                    if (iter == xlist.end()){
                        xlist.insert(id);
                        ret += (" " + id + " banned");
                    }
                    else{
                        xlist.erase(iter);
                        ret += (" " + id + " unbanned");
                    }

                    cc_store_set_to_file(configs.global().get("file::ban::ip_based"), IPBanList);
                	cc_store_set_to_file(configs.global().get("file::ban::id_based"), IDBanList);
                }else
                    ret = "Access denied.";
            }

            if(HAS_KEY("hide-image")){
                struct Thread * t = unq_read_thread(pDb, atol(param1.c_str()));
                
                string oldname = "images/" + string(t->imgSrc);
                string newname = oldname + ".tmp";
                rename(oldname.c_str(), newname.c_str());

                delete t;
            }

            if(HAS_KEY("kill-all")){
                if(aid == "admin" || ASSIST("kill")){
                    string id = param1;

                    struct Thread *r = unq_read_thread(pDb, 0); 
                    struct Thread *t;
                    bool ipflag = (param2 == "ip");

                    clock_t startc = clock();
                    for(cclong i = r->childCount; i > 0; i--){
                        t = unq_read_thread(pDb, i);
                        if(ipflag){
                            if(strcmp(id.c_str(), t->email) == 0) unq_delete_thread(pDb, i);
                        }else{
                            if(strcmp(id.c_str(), t->ssid) == 0) unq_delete_thread(pDb, i);
                        }

                        if(t) delete t;
                    }
                    clock_t endc = clock();

                    if(r) delete r;
                    ret += (" Take " + to_string((float)(endc-startc)/CLOCKS_PER_SEC));
                }else
                    ret = "Access denied.";  
            }

            if(HAS_KEY("search")){
                if(aid == "admin" || ASSIST("search")){
                    struct Thread *t, *r = unq_read_thread(pDb, 0); 
                    int c = 0, limit = atol(param2.c_str());
                    ret = "[";

                    for(cclong i = r->childCount; i > 0; i--){
                        if(++c == limit) break;
                        t = unq_read_thread(pDb, i);
                        const char* content = unq_read_string(pDb, t->content);
                        if(content && strstr(content, param1.c_str())){
                            ret += ("\"" + to_string(t->threadID) + "\",");
                            delete content;
                        }
                        delete t;
                    }

                    ret += "\"\"]";

                    if(r) delete r;
                }else
                    ret = "[]";
            }

            // if(HAS_KEY("transfer")){
            //     if(aid == "admin" || ASSIST("transfer")){
            //         mg_connection* remote = mg_connect(server, param1.c_str());
            //         mg_printf(remote, "GET %s HTTP/1.0\r\nHost: %s\r\n\r\n",
            //         "/gapi/translate?from=eng&dest=fra&format=json&phrase=cat",
            //         s_remote_addr);
            //     }
            // }
            
            mg_send_header(conn, "Content-Type", "text/plain");
            mg_printf_data(conn, ret.c_str());
        }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rdi, %r13
cmpq $0x0, 0x270(%rdi)
je 0x11dec
xorps %xmm0, %xmm0
leaq 0x1e0(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps %xmm0, (%rdx)
movaps %xmm0, 0x170(%rsp)
movaps %xmm0, 0x160(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movaps %xmm0, 0x150(%rsp)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0xb8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movaps %xmm0, 0x140(%rsp)
movb %cl, (%rax)
leaq 0x100(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq 0x4fabc(%rip), %rsi     # 0x6178f
pushq $0x20
popq %rcx
movq %r13, %rdi
callq 0x5c2dd
leaq 0x88(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0xcb10
leaq 0xd0(%rsp), %rdi
leaq 0x88(%rsp), %rbx
movq %rbx, %rsi
callq 0xc5f0
movq %rbx, %rdi
callq 0xcd88
leaq 0x4fa7c(%rip), %rsi     # 0x6179b
leaq 0x160(%rsp), %rdx
pushq $0x20
popq %rcx
movq %r13, %rdi
callq 0x5c2dd
leaq 0x88(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0xcb10
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rbx
movq %rbx, %rsi
callq 0xc5f0
movq %rbx, %rdi
callq 0xcd88
leaq 0x4fa31(%rip), %rsi     # 0x617a4
leaq 0x140(%rsp), %rdx
pushq $0x20
popq %rcx
movq %r13, %rdi
callq 0x5c2dd
leaq 0x88(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0xcb10
leaq 0xf0(%rsp), %rdi
leaq 0x88(%rsp), %rbx
movq %rbx, %rsi
callq 0xc5f0
movq %rbx, %rdi
callq 0xcd88
leaq 0x5588b(%rip), %rsi     # 0x67652
leaq 0xd0(%rsp), %rdi
callq 0x10fbd
testb %al, %al
je 0x11e0c
leaq 0x569dd(%rip), %rsi     # 0x687bc
movq %r13, %rdi
callq 0x1e718
jmp 0x12c62
leaq 0x569c9(%rip), %rsi     # 0x687bc
movq %r13, %rdi
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1e718
leaq 0x4f99a(%rip), %rsi     # 0x617ad
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xcb10
leaq 0x4f993(%rip), %rdi     # 0x617bf
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x120b6
leaq 0x68(%rsp), %rdi
callq 0xea82
leaq 0x1c0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xc640
leaq 0x28(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0xe561
leaq 0x1c0(%rsp), %rdi
callq 0xcd88
leaq 0x75ced(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f933(%rip), %rsi     # 0x617c5
movq %rsp, %rdi
leaq 0x120(%rsp), %rdx
callq 0xcb10
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x104e4
leaq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x1000c
testb %al, %al
je 0x11f84
leaq 0x75ca4(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f904(%rip), %rsi     # 0x617df
leaq 0x48(%rsp), %rdi
leaq 0x27(%rsp), %rdx
callq 0xcb10
leaq 0x48(%rsp), %rsi
movq %rbx, %rdi
callq 0x104e4
leaq 0xf0(%rsp), %rdi
movq %rax, %rsi
callq 0x1000c
movl %eax, %ebx
leaq 0x48(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
testb %bl, %bl
je 0x11f8c
leaq 0x1a0(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc640
leaq 0x4f918(%rip), %rdx     # 0x61850
leaq 0x1a0(%rsp), %rsi
movq %r13, %rdi
callq 0xe223
leaq 0x1a0(%rsp), %rdi
callq 0xcd88
leaq 0x75cec(%rip), %rdi     # 0x87c48
leaq 0x28(%rsp), %rsi
callq 0xcc70
movq %r13, %rdi
callq 0xe898
leaq 0x4f884(%rip), %rdi     # 0x617f9
movq %rax, %rsi
xorl %eax, %eax
callq 0xeb8f
jmp 0x120a2
movq %rsp, %rdi
callq 0xcd88
leaq 0x75bdd(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f86e(%rip), %rsi     # 0x61810
leaq 0x120(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x10196
leaq 0x4f830(%rip), %rdx     # 0x617ee
leaq 0x48(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x100f2
leaq 0x48(%rsp), %rsi
movq %rbx, %rdi
callq 0x104e4
movq %rsp, %rdi
movq %rax, %rsi
callq 0xc640
leaq 0x48(%rsp), %rdi
callq 0xcd88
leaq 0x120(%rsp), %rdi
callq 0xcd88
cmpq $0x0, 0x8(%rsp)
je 0x1209a
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1000c
testb %al, %al
je 0x1209a
leaq 0x180(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc640
leaq 0x4f832(%rip), %rdx     # 0x6186a
leaq 0x180(%rsp), %rsi
movq %r13, %rdi
callq 0xe223
leaq 0x180(%rsp), %rdi
callq 0xcd88
leaq 0x75c0c(%rip), %rdi     # 0x87c68
leaq 0xa8(%rsp), %rsi
callq 0x14e40
leaq 0x28(%rsp), %rsi
movq %rax, %rdi
callq 0xcc70
movq 0xa8(%rsp), %rbx
movq %r13, %rdi
callq 0xe898
leaq 0x4f796(%rip), %rdi     # 0x61823
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0xeb8f
movq %rsp, %rdi
callq 0xcd88
leaq 0x28(%rsp), %rdi
callq 0xcd88
leaq 0x68(%rsp), %rdi
callq 0xcd88
leaq 0x55595(%rip), %rsi     # 0x67652
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0xcb10
movq %r13, %rdi
callq 0xe080
testb %al, %al
je 0x120eb
leaq 0x4f771(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0xcd10
jmp 0x12120
leaq 0x28(%rsp), %rdi
movq %r13, %rsi
callq 0xe111
leaq 0x68(%rsp), %rbx
leaq 0x28(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0xc5f0
movq %r14, %rdi
callq 0xcd88
cmpq $0x0, 0x8(%rbx)
je 0x122c4
leaq 0x4f724(%rip), %rdi     # 0x6184b
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x12172
leaq 0x28(%rsp), %rdi
callq 0xea82
leaq 0x75aff(%rip), %rdi     # 0x87c48
leaq 0x28(%rsp), %rbx
movq %rbx, %rsi
callq 0xc5f0
movq %rbx, %rdi
callq 0xcd88
leaq 0x4f6f1(%rip), %rsi     # 0x61856
leaq 0x88(%rsp), %rdi
callq 0xcd10
leaq 0x4f6ec(%rip), %rdi     # 0x61865
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x121f0
leaq 0x28(%rsp), %rdi
callq 0xea82
leaq 0x75acd(%rip), %rdi     # 0x87c68
leaq 0x68(%rsp), %rsi
callq 0x14e40
leaq 0x28(%rsp), %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0xc5f0
movq %rbx, %rdi
callq 0xcd88
leaq 0x4f697(%rip), %rdx     # 0x6185b
leaq 0x28(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1509e
leaq 0x88(%rsp), %rdi
leaq 0x28(%rsp), %rbx
movq %rbx, %rsi
callq 0xc5f0
movq %rbx, %rdi
callq 0xcd88
leaq 0x4f67a(%rip), %rdi     # 0x61871
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x12371
leaq 0x4f63d(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0x10fbd
testb %al, %al
jne 0x122a5
leaq 0x75944(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f5d5(%rip), %rsi     # 0x61810
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x10196
leaq 0x5004e(%rip), %rdx     # 0x6229f
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x51c8e(%rip), %rdx     # 0x63ef3
leaq 0x28(%rsp), %rdi
movq %rsp, %rsi
callq 0x100f2
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x14efa
movl %eax, %ebx
leaq 0x28(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
testb %bl, %bl
je 0x1235d
movq 0xa8(%rsp), %rdi
callq 0xc730
pushq $0x1
popq %rdx
movq %r13, %rdi
movl %eax, %esi
callq 0x2507c
jmp 0x12371
leaq 0x515cf(%rip), %rsi     # 0x6389a
movq %rsp, %rdi
leaq 0x120(%rsp), %rdx
callq 0xcb10
leaq 0x75a66(%rip), %rdi     # 0x87d48
movq %rsp, %rsi
callq 0x14fb0
movq %rax, %rbx
leaq 0x4f54a(%rip), %rsi     # 0x6183e
leaq 0x48(%rsp), %rdi
leaq 0x27(%rsp), %rdx
callq 0xcb10
leaq 0x1c8(%rbx), %rdi
leaq 0x48(%rsp), %rsi
callq 0x189cc
movb $0x1, (%rax)
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x1501c
movq 0x28(%rsp), %rsi
movq %r13, %rdi
callq 0x1e718
leaq 0x28(%rsp), %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
pushq $0x1
popq %rsi
movq %r13, %rdi
callq 0x11869
jmp 0x12c4b
leaq 0x4f51b(%rip), %rsi     # 0x6187f
leaq 0x88(%rsp), %rdi
callq 0xcd10
leaq 0x4fff0(%rip), %rdi     # 0x62368
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x123c2
leaq 0x4f4c0(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0x10fbd
testb %al, %al
je 0x123c2
leaq 0x757cb(%rip), %rdi     # 0x87b70
callq 0x1008c
leaq 0xa8(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
movq %rax, %rdi
callq 0x150d6
leaq 0x4f4c5(%rip), %rdi     # 0x6188e
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x1252c
cmpq $0x0, 0xb0(%rsp)
je 0x1252c
leaq 0x4f45c(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0x10fbd
testb %al, %al
jne 0x12486
leaq 0x75763(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f3f4(%rip), %rsi     # 0x61810
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x10196
leaq 0x4fe6d(%rip), %rdx     # 0x6229f
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x4f452(%rip), %rdx     # 0x61898
leaq 0x28(%rsp), %rdi
movq %rsp, %rsi
callq 0x100f2
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x14efa
movl %eax, %ebx
leaq 0x28(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
testb %bl, %bl
je 0x12518
movq 0xa8(%rsp), %rdi
callq 0xc730
movq 0x7577e(%rip), %rdi     # 0x87c18
movl %eax, %esi
callq 0xd515
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
callq 0xc730
movb %al, (%rbx)
movq 0x7575e(%rip), %rdi     # 0x87c18
movl 0xb8(%rbx), %esi
pushq $0x1
popq %rcx
movq %rbx, %rdx
callq 0xd674
movsbl (%rbx), %esi
movq %rsp, %rdi
callq 0xd2f8
leaq 0x4f3c8(%rip), %rsi     # 0x618a5
leaq 0x28(%rsp), %rdi
movq %rsp, %rdx
callq 0x10111
leaq 0x88(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xc9c0
leaq 0x28(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
movq %rbx, %rdi
callq 0xc660
jmp 0x1252c
leaq 0x4f360(%rip), %rsi     # 0x6187f
leaq 0x88(%rsp), %rdi
callq 0xcd10
leaq 0x4f37f(%rip), %rdi     # 0x618b2
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x12777
leaq 0x4f301(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0x10fbd
testb %al, %al
jne 0x125e1
leaq 0x75608(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f299(%rip), %rsi     # 0x61810
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x10196
leaq 0x4fd12(%rip), %rdx     # 0x6229f
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x4f311(%rip), %rdx     # 0x618b2
leaq 0x28(%rsp), %rdi
movq %rsp, %rsi
callq 0x100f2
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x14efa
movl %eax, %ebx
leaq 0x28(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
testb %bl, %bl
je 0x12763
leaq 0x28(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xc640
leaq 0x4f5c2(%rip), %rsi     # 0x61bbc
leaq 0xf0(%rsp), %rdi
callq 0x10fbd
leaq 0x756ca(%rip), %rcx     # 0x87cd8
leaq 0x7568b(%rip), %rbx     # 0x87ca0
testb %al, %al
cmovneq %rcx, %rbx
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x1e5e8
testq %rax, %rax
je 0x12674
movq %rbx, %rdi
movq %rax, %rsi
callq 0x1e616
leaq 0x554c2(%rip), %rsi     # 0x67b01
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x10196
leaq 0x4f269(%rip), %rdx     # 0x618be
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x88(%rsp), %rdi
movq %rsp, %rsi
callq 0xc9c0
jmp 0x126bb
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x10fca
leaq 0x55479(%rip), %rsi     # 0x67b01
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x10196
leaq 0x4f218(%rip), %rdx     # 0x618b6
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x88(%rsp), %rdi
movq %rsp, %rsi
callq 0xc9c0
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
leaq 0x7549c(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f1e5(%rip), %rsi     # 0x618c8
movq %rsp, %rdi
leaq 0x48(%rsp), %rdx
callq 0xcb10
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x104e4
leaq 0x755d6(%rip), %rsi     # 0x87cd8
movq %rax, %rdi
callq 0xff95
movq %rsp, %rdi
callq 0xcd88
leaq 0x75457(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4f1b4(%rip), %rsi     # 0x618dc
movq %rsp, %rdi
leaq 0x48(%rsp), %rdx
callq 0xcb10
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x104e4
leaq 0x75559(%rip), %rsi     # 0x87ca0
movq %rax, %rdi
callq 0xff95
movq %rsp, %rdi
callq 0xcd88
leaq 0x28(%rsp), %rdi
callq 0xcd88
jmp 0x12777
leaq 0x4f115(%rip), %rsi     # 0x6187f
leaq 0x88(%rsp), %rdi
callq 0xcd10
leaq 0x4f172(%rip), %rdi     # 0x618f0
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x12823
movq 0x7547e(%rip), %rbx     # 0x87c18
movq 0xa8(%rsp), %rdi
callq 0xc730
movq %rbx, %rdi
movl %eax, %esi
callq 0xd515
movq %rax, %rbx
leaq 0xa8(%rax), %rsi
movq %rsp, %rdi
leaq 0x48(%rsp), %rdx
callq 0xcb10
leaq 0x4ecb8(%rip), %rsi     # 0x61487
leaq 0x28(%rsp), %rdi
movq %rsp, %rdx
callq 0x10111
movq %rsp, %rdi
callq 0xcd88
leaq 0x4f110(%rip), %rdx     # 0x618fb
movq %rsp, %rdi
leaq 0x28(%rsp), %rsi
callq 0x1509e
leaq 0x28(%rsp), %r14
movq (%r14), %rdi
movq %rsp, %r15
movq (%r15), %rsi
callq 0xccb0
movq %rbx, %rdi
callq 0xc660
movq %r15, %rdi
callq 0xcd88
movq %r14, %rdi
callq 0xcd88
leaq 0x4f0d6(%rip), %rdi     # 0x61900
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x129ff
leaq 0x4f00a(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0x10fbd
testb %al, %al
jne 0x128d8
leaq 0x75311(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4efa2(%rip), %rsi     # 0x61810
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x10196
leaq 0x4fa1b(%rip), %rdx     # 0x6229f
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x4f071(%rip), %rdx     # 0x61909
leaq 0x28(%rsp), %rdi
movq %rsp, %rsi
callq 0x100f2
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x14efa
movl %eax, %ebx
leaq 0x28(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
testb %bl, %bl
je 0x129eb
leaq 0x28(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xc640
movq 0x75327(%rip), %rdi     # 0x87c18
xorl %esi, %esi
callq 0xd515
movq %rax, %r14
leaq 0x4f2ba(%rip), %rsi     # 0x61bbc
leaq 0xf0(%rsp), %rdi
callq 0x10fbd
movl %eax, %ebp
callq 0xc060
movq %rax, %rbx
movl 0xcc(%r14), %r15d
testl %r15d, %r15d
jle 0x1297a
movq 0x752ec(%rip), %rdi     # 0x87c18
movl %r15d, %esi
callq 0xd515
movq %rax, %r12
movq 0x28(%rsp), %rdi
testb %bpl, %bpl
je 0x12948
leaq 0x51(%r12), %rsi
jmp 0x12950
leaq 0x91(%r12), %rsi
callq 0xc970
testl %eax, %eax
jne 0x12968
movq 0x752b8(%rip), %rdi     # 0x87c18
movl %r15d, %esi
callq 0xd576
testq %r12, %r12
je 0x12975
movq %r12, %rdi
callq 0xc660
decl %r15d
jmp 0x12920
callq 0xc060
movq %rax, %r15
testq %r14, %r14
je 0x1298f
movq %r14, %rdi
callq 0xc660
subq %rbx, %r15
cvtsi2ss %r15, %xmm0
divss 0x4ecfd(%rip), %xmm0    # 0x6169c
leaq 0x48(%rsp), %rdi
callq 0x15190
leaq 0x4ef5e(%rip), %rsi     # 0x6190e
movq %rsp, %rdi
leaq 0x48(%rsp), %rdx
callq 0x10111
leaq 0x88(%rsp), %rdi
movq %rsp, %rsi
callq 0xc9c0
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
leaq 0x28(%rsp), %rdi
callq 0xcd88
jmp 0x129ff
leaq 0x4ee8d(%rip), %rsi     # 0x6187f
leaq 0x88(%rsp), %rdi
callq 0xcd10
leaq 0x4ef0f(%rip), %rdi     # 0x61915
leaq 0xd0(%rsp), %rsi
callq 0x15088
testb %al, %al
je 0x12c23
leaq 0x4ee2e(%rip), %rsi     # 0x61850
leaq 0x68(%rsp), %rdi
callq 0x10fbd
testb %al, %al
jne 0x12ab4
leaq 0x75135(%rip), %rdi     # 0x87b70
callq 0x1008c
movq %rax, %rbx
leaq 0x4edc6(%rip), %rsi     # 0x61810
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x10196
leaq 0x4f83f(%rip), %rdx     # 0x6229f
movq %rsp, %rdi
leaq 0x48(%rsp), %rsi
callq 0x100f2
leaq 0x4eea1(%rip), %rdx     # 0x61915
leaq 0x28(%rsp), %rdi
movq %rsp, %rsi
callq 0x100f2
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x14efa
movl %eax, %ebx
leaq 0x28(%rsp), %rdi
callq 0xcd88
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
callq 0xcd88
testb %bl, %bl
je 0x12c0f
movq 0x7515d(%rip), %rdi     # 0x87c18
xorl %esi, %esi
callq 0xd515
movq %rax, %rbx
movq %r13, 0x110(%rsp)
movq 0xf0(%rsp), %rdi
callq 0xc730
movq %rax, %r15
leaq 0x4ee38(%rip), %rsi     # 0x6191c
leaq 0x88(%rsp), %rdi
callq 0xcd10
movq %rbx, 0x118(%rsp)
movl 0xcc(%rbx), %esi
decl %r15d
leaq 0x48(%rsp), %rbp
movq %rsp, %r14
testl %esi, %esi
jle 0x12bdf
subl $0x1, %r15d
jb 0x12bdf
movq 0x750f5(%rip), %rdi     # 0x87c18
movl %esi, 0xcc(%rsp)
callq 0xd515
movq %rax, %rbx
movq 0x750df(%rip), %rdi     # 0x87c18
leaq 0x1(%rax), %rsi
callq 0xdd4d
movq %rax, %r12
testq %rax, %rax
je 0x12bc9
movq 0xa8(%rsp), %rsi
movq %r12, %rdi
callq 0xc570
testq %rax, %rax
je 0x12bc9
movl 0xb8(%rbx), %esi
movq %rbp, %r13
movq %rbp, %rdi
callq 0x10273
movq %r14, %rdi
leaq 0x4f0ef(%rip), %rsi     # 0x61c69
movq %r13, %rdx
callq 0x10111
leaq 0x28(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
leaq 0x4ed8a(%rip), %rdx     # 0x6191e
callq 0x100f2
leaq 0x88(%rsp), %rdi
movq %r13, %rsi
callq 0xc9c0
movq %r13, %rdi
callq 0xcd88
movq %r14, %rdi
callq 0xcd88
movq %rbp, %rdi
callq 0xcd88
movq %r12, %rdi
callq 0xc660
movq %rbx, %rdi
callq 0xc660
movl 0xcc(%rsp), %esi
decl %esi
jmp 0x12b0a
leaq 0x4ed3b(%rip), %rsi     # 0x61921
leaq 0x88(%rsp), %rdi
callq 0xc7d0
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
movq 0x110(%rsp), %r13
je 0x12c23
callq 0xc660
jmp 0x12c23
leaq 0x4ed0f(%rip), %rsi     # 0x61925
leaq 0x88(%rsp), %rdi
callq 0xcd10
leaq 0x4ecfe(%rip), %rsi     # 0x61928
leaq 0x4ed04(%rip), %rdx     # 0x61935
movq %r13, %rdi
callq 0x59518
movq 0x88(%rsp), %rsi
movq %r13, %rdi
xorl %eax, %eax
callq 0x59649
leaq 0x68(%rsp), %rdi
callq 0xcd88
leaq 0x88(%rsp), %rdi
callq 0xcd88
leaq 0xf0(%rsp), %rdi
callq 0xcd88
leaq 0xa8(%rsp), %rdi
callq 0xcd88
leaq 0xd0(%rsp), %rdi
callq 0xcd88
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x12d75
jmp 0x12d82
jmp 0x12e9a
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
jmp 0x12d66
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
jmp 0x12e50
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xcd88
jmp 0x12dc6
jmp 0x12de1
jmp 0x12de1
jmp 0x12e90
jmp 0x12d75
jmp 0x12d82
jmp 0x12e9a
jmp 0x12e65
jmp 0x12e74
jmp 0x12e5e
jmp 0x12e90
jmp 0x12e65
jmp 0x12e74
jmp 0x12e5e
jmp 0x12e90
jmp 0x12e65
jmp 0x12e74
jmp 0x12e5e
jmp 0x12e90
jmp 0x12e65
jmp 0x12e74
jmp 0x12e65
jmp 0x12e5e
jmp 0x12e74
jmp 0x12e90
jmp 0x12e5e
jmp 0x12e90
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0xcd88
jmp 0x12e32
jmp 0x12e2f
movq %rax, %rbx
movq %rsp, %rdi
callq 0xcd88
jmp 0x12d85
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0x12e50
jmp 0x12e9a
jmp 0x12e90
jmp 0x12e9a
jmp 0x12e9a
jmp 0x12e90
jmp 0x12e9a
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x12dcb
jmp 0x12e90
jmp 0x12de1
jmp 0x12e90
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0xcd88
jmp 0x12de4
movq %rax, %rbx
jmp 0x12e48
jmp 0x12e9a
jmp 0x12e9a
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x12ea2
jmp 0x12e90
jmp 0x12e90
jmp 0x12e90
jmp 0x12e9a
jmp 0x12e90
jmp 0x12e90
jmp 0x12e9a
jmp 0x12e90
jmp 0x12e2f
jmp 0x12e9a
movq %rax, %rbx
leaq 0x1c0(%rsp), %rdi
jmp 0x12ea2
jmp 0x12e90
jmp 0x12e57
jmp 0x12e2f
jmp 0x12e90
jmp 0x12e2f
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x12e50
jmp 0x12e9a
jmp 0x12e90
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0xcd88
leaq 0x120(%rsp), %rdi
callq 0xcd88
jmp 0x12e9d
movq %rax, %rbx
jmp 0x12eb1
jmp 0x12e95
movq %rax, %rbx
jmp 0x12e7f
jmp 0x12e90
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xcd88
jmp 0x12e77
movq %rax, %rbx
movq %rsp, %rdi
callq 0xcd88
leaq 0x48(%rsp), %rdi
jmp 0x12ea2
jmp 0x12e95
jmp 0x12e95
jmp 0x12e95
jmp 0x12e90
jmp 0x12e90
movq %rax, %rbx
jmp 0x12ea7
movq %rax, %rbx
jmp 0x12ebe
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xcd88
leaq 0x68(%rsp), %rdi
callq 0xcd88
leaq 0x88(%rsp), %rdi
callq 0xcd88
leaq 0xf0(%rsp), %rdi
callq 0xcd88
leaq 0xa8(%rsp), %rdi
callq 0xcd88
leaq 0xd0(%rsp), %rdi
callq 0xcd88
movq %rbx, %rdi
callq 0xc790