// File: /workspace/github_c_makefile_star2_O1/xiaowenhuyuehu[P]remote_access/src/core/remote_terminal.c
// Function: sda_run_loop
int sda_run_loop (void)
{
    char *buf = NULL, *buf_hdr = NULL, *session_id = NULL, *tmp_buf = NULL;
    int ret = 0, tmp = 0, tmp_fd = 0, payload = 0, tmp_index = 0, timeout = 0;
    struct timeval tv;
    ConnectInfo_t connInfo;
    fd_set rfds;
    int socketfd_local[DEFAULT_SESSION_COUNT] = {0};
    RemoteTerminalMsgHeader hdr;
    
    buf = malloc(DEFAULT_MSG_BUFFER_LEN);
    if(!buf){
        log_error("failed to alloc memory  "); 
        goto _exit;
    }

    ret = sda_connect_to_cloud();
    if (0 != ret) {
        goto _exit;
    }

    memset(&connInfo, 0x0, sizeof(ConnectInfo_t));
    ret = rd_net_get_conn_info(&g_network, NULL, &connInfo);
    if (0 != ret) {
        log_error("get cloud connect info failed ");
        goto _exit;
    }
    _init_local_fd_array(socketfd_local, DEFAULT_SESSION_COUNT);
    log_info("connect to cloud success, socketfd: %d ", connInfo.sockfd);
    while (g_is_running) {
        tv.tv_sec = 0;
        tv.tv_usec = 500*1000L;
        _add_select_array(connInfo.sockfd, socketfd_local, DEFAULT_SESSION_COUNT, &rfds);

        ret = select(_get_max_socketfd(connInfo.sockfd, socketfd_local, DEFAULT_SESSION_COUNT), &rfds, NULL, NULL, &tv);

        memset(buf, 0, DEFAULT_MSG_BUFFER_LEN);
        if (ret == 0) {
            nopoll_conn_send_ping (g_network.handle);
            if(++timeout >= 30*60){
                log_info("there is no package received in 30 min, close current connection...");
                break;
            } 
        }else if(ret < 0){
            log_error("failed to select: %s , close current connection", strerror(errno));
            _send_error_resp(ERR_CONNECTION_CLOSE, "device network error.", NULL, NULL, buf);
            break;
        }

		//local service
		if(ret > 0)
		{
			int index = _get_active_socketfd_index(socketfd_local, DEFAULT_SESSION_COUNT, &rfds);
			if(index != -1){
				char *token = get_session_id_by_socketfd(socketfd_local + index);
				if(token == NULL){
					log_error("can not find session id for socketfd: %d, close it.", socketfd_local[index]);
					_del_socketfd_by_index(index, socketfd_local, DEFAULT_SESSION_COUNT);
					close(socketfd_local[index]);
					continue;
				}

				ret = recv(socketfd_local[index], buf, DEFAULT_MSG_BUFFER_LEN - DEFAULT_MSG_HDR_LEN, 0);
				timeout = 0; 
				log_debug("recv msg comes from sshd, socketfd: %d, index: %d, len:%d ", socketfd_local[index], index, ret);
				//dump_hex(buf, ret);
				if (ret > 0) {
					buf_hdr = sda_gen_msg_header(MSG_SERVICE_PROVIDER_RAW_PROTOCOL, ret, NULL, token);
					memmove(buf + strlen(buf_hdr), buf, ret);
					memmove(buf, buf_hdr, strlen(buf_hdr));
					tmp = rd_net_write(&g_network, NULL, buf, ret + strlen(buf_hdr), 0);
					log_debug("resend to cloud, len:%d", tmp);
				} else {
					log_error("local service exit:  %s ", strerror(errno));
					free_session(get_session_id_by_socketfd(socketfd_local + index));
					_del_socketfd_by_index(index, socketfd_local, DEFAULT_SESSION_COUNT);
					close(socketfd_local[index]);
					_send_error_resp(ERR_SERVICE_EXIT, "local service exit", NULL, token, buf);
				}
			}
		}
		
		//cloud service
        {
            ret = _read_msg_hdr(buf, DEFAULT_MSG_BUFFER_LEN);
			if(ret < 0)
				continue;
            
            timeout = 0;
            if(0 == get_msg_header(buf, &hdr)){
                log_error("read wrong format data, pending data len: %d", rd_net_read(&g_network, NULL, buf, DEFAULT_MSG_BUFFER_LEN, 0));
                _send_error_resp(ERR_PARAM_INVALID, "cloud msg format is invalid", NULL, NULL, buf);
                continue;
            }
            if(hdr.msg_type == MSG_SERVICE_CONSUMER_NEW_SESSION){
                rd_net_read(&g_network, NULL, buf + strlen(buf), hdr.payload_len + 4, 0);//FIXME, deal with service port
                if(0 == is_session_avalibe()){
                    log_error("session is too much...  ");
                    _send_error_resp(ERR_SESSION_LIMIT, "no available session to be allocated", hdr.msg_id, NULL, buf);
                    continue;
                }

                tmp_fd = sda_connect_to_local_service();
                if(tmp_fd == -1){
                    log_error("failed to connect to local service\n");
                    _send_error_resp(ERR_SERVICE_UNAVALIBE, "local service is not available", hdr.msg_id, NULL, buf);
                    continue;
                }
                tmp_index = _add_localfd(tmp_fd, socketfd_local, DEFAULT_SESSION_COUNT);
                if(tmp_index == DEFAULT_SESSION_COUNT){
                    _send_error_resp(ERR_SESSION_CREATE_FAILED, "socketfd insert error", hdr.msg_id, NULL, buf);
                    close(tmp_fd);
                    log_error("failed to add socketfd");
                    continue;
                }

                session_id = alloc_new_session(socketfd_local + tmp_index);
                if(session_id == NULL){
                    close(tmp_fd);
                    log_error("failed to alloc new session");
                    _send_error_resp(ERR_SESSION_CREATE_FAILED, "memory error", hdr.msg_id, NULL, buf);
                    continue;
                }
                char data[128] = {0};
                snprintf(data, sizeof(data) - 1, "{\"session_id\": \"%s\"}", session_id);
                tmp_buf  = sda_gen_payload_msg(0, data, "new session response");

                buf_hdr = sda_gen_msg_header(MSG_RESP_OK , strlen(tmp_buf), hdr.msg_id, session_id);
                memset(buf, 0, DEFAULT_MSG_BUFFER_LEN);
                snprintf(buf, DEFAULT_MSG_BUFFER_LEN, "%s%s", buf_hdr, tmp_buf); 
                rd_net_write(&g_network, NULL, buf, strlen(buf), 0);
                log_debug("send new session respose to cloud, socketfd: %d, index: %d, %s ", socketfd_local[tmp_index], tmp_index, buf);
                free(session_id);
            } else if(hdr.msg_type == MSG_SERVICE_CONSUMER_RELEASE_SESSION){//TODO
                rd_net_read(&g_network, NULL, buf + strlen(buf), hdr.payload_len, 0);//FIXME, deal with service port
                int _socketfd = get_socketfd_by_session_id(hdr.token);
                if(_socketfd < 0){
                    _send_error_resp(ERR_SESSION_NONEXISTENT, "cannot find local connection by session id", hdr.msg_id, hdr.token, buf);
                    log_error("session is not exist");
                    continue; 
                }
                _del_socketfd_by_id(_socketfd, socketfd_local, DEFAULT_SESSION_COUNT);
                close(_socketfd);

                free_session(hdr.token);

                char data[128] = {0};
                snprintf(data, sizeof(data) - 1, "{\"session_id\": \"%s\"}", hdr.token);
                tmp_buf  = sda_gen_payload_msg(0, data, "release session response");

                buf_hdr = sda_gen_msg_header(MSG_RESP_OK , strlen(tmp_buf), hdr.msg_id, hdr.token);
                memset(buf, 0, DEFAULT_MSG_BUFFER_LEN);
                snprintf(buf, DEFAULT_MSG_BUFFER_LEN, "%s%s", buf_hdr, tmp_buf); 
                rd_net_write(&g_network, NULL, buf, strlen(buf), 0);
                log_debug("send release session respose to cloud, socketfd: %d,  %s ", _socketfd, buf); 
            } else if(hdr.msg_type == MSG_SERVICE_CONSUMER_RAW_PROTOCOL){
                int _socketfd = get_socketfd_by_session_id(hdr.token);
                if(_socketfd < 0){
                    _send_error_resp(ERR_SESSION_NONEXISTENT, "cannot find local connection by session id", hdr.msg_id, hdr.token, buf);
                    log_error("session is not exist"); 
                    continue; 
                }

                int n = 0, nwritten = 0, nread = 0, m = 0;
                log_debug("send payload %d start, session id: %s\n", hdr.payload_len, hdr.token);
                memset(buf, 0, DEFAULT_MSG_BUFFER_LEN);
                while(nread < hdr.payload_len){
                    memset(buf, 0, DEFAULT_MSG_BUFFER_LEN);
                    n = nopoll_conn_read(g_network.handle, buf, hdr.payload_len - nread > DEFAULT_MSG_BUFFER_LEN ? DEFAULT_MSG_BUFFER_LEN : hdr.payload_len - nread, nopoll_true, 1000);
                    if(n == -1)
                        continue;
                    nread += n;
                    //dump_hex(buf, n);
                    nwritten = 0;
                    while(nwritten < n){
                        m = send(_socketfd, buf + nwritten, n - nwritten, 0);
                        nwritten += m;
                        if(m == -1){
                            log_info("resend to local service FAILED, len: %d, payload: %d ", n, payload);
                            free_session(hdr.token);
                            _del_socketfd_by_id(_socketfd, socketfd_local, DEFAULT_SESSION_COUNT);
                            close(_socketfd);
                            _send_error_resp(ERR_SERVICE_EXIT, "local service exit", hdr.msg_id, hdr.token, buf);
                            break;
                        }
                    }
                }
                log_debug("send payload %d done\n", hdr.payload_len);
            } else if(hdr.msg_type == MSG_RESP_OK){
                ret = rd_net_read(&g_network, NULL, buf + strlen(buf), hdr.payload_len, 0);//FIXME, deal with service port
                log_debug("login response: %d %s\n", ret, buf);
                if((0 == strcmp(hdr.msg_id, DEFAULT_MSG_ID_HDSK)) && 
                        (0 == is_login_ok(buf + hdr.hdr_len, hdr.payload_len))){
                    log_error("login to cloud failed ");
                    goto _exit;
                }
            }
        } 
    }

_exit:
    deinit_session_system();
    rd_net_destroy(&g_network);
    _close_all_conn(socketfd_local, DEFAULT_SESSION_COUNT);

    if(buf != NULL)
        free(buf);

    return ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa18, %rsp            # imm = 0xA18
pxor %xmm0, %xmm0
movdqa %xmm0, 0x110(%rsp)
movdqa %xmm0, 0x100(%rsp)
movdqa %xmm0, 0xf0(%rsp)
movdqa %xmm0, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
movdqa %xmm0, 0xc0(%rsp)
movdqa %xmm0, 0xb0(%rsp)
movdqa %xmm0, 0xa0(%rsp)
movl $0x2000, %edi           # imm = 0x2000
callq 0x2150
movq %rax, %rbx
testq %rax, %rax
je 0x5900
leaq 0x210(%rsp), %rdi
movl $0x800, %edx            # imm = 0x800
xorl %esi, %esi
callq 0x2090
movq 0x7b07(%rip), %rax      # 0xd390
xorl %edx, %edx
cmpb $0x1, 0x3d(%rax)
sete %dl
movq (%rax), %rcx
movq 0x8(%rax), %r8
movzbl 0x3c(%rax), %esi
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movl %esi, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x7a8f(%rip), %r14      # 0xd348
movq %r14, %rdi
xorl %esi, %esi
xorl %r9d, %r9d
callq 0x2acf
movq %r14, %rdi
callq 0x28d4
testl %eax, %eax
je 0x592e
movl %eax, %r14d
leaq 0x3d54(%rip), %rsi      # 0x9630
leaq 0x3d53(%rip), %rdx      # 0x9636
leaq 0x427c(%rip), %r8       # 0x9b66
movl $0x3, %edi
movl $0x33, %ecx
xorl %eax, %eax
callq 0x4371
jmp 0x5a59
leaq 0x3d29(%rip), %rsi      # 0x9630
leaq 0x3d28(%rip), %rdx      # 0x9636
leaq 0x3d3c(%rip), %r8       # 0x9651
xorl %r14d, %r14d
movl $0x3, %edi
movl $0x17e, %ecx            # imm = 0x17E
xorl %eax, %eax
callq 0x4371
jmp 0x6b63
movq 0x7a5b(%rip), %rax      # 0xd390
movq 0x18(%rax), %rdi
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
callq 0x70fa
movq %rax, %r15
movq %rax, %rdi
callq 0x2270
leaq 0x4148(%rip), %rdx      # 0x9aa0
xorl %r14d, %r14d
movl $0x1, %edi
movl %eax, %esi
xorl %ecx, %ecx
callq 0x6fe8
movq %rax, %r12
leaq 0x3d16(%rip), %r13      # 0x9689
leaq 0x3cbc(%rip), %rbp      # 0x9636
leaq 0x41f4(%rip), %r8       # 0x9b75
movl $0x1, %edi
movq %r13, %rsi
movq %rbp, %rdx
movl $0x3a, %ecx
movq %rax, %r9
xorl %eax, %eax
callq 0x4371
leaq 0x41e7(%rip), %r8       # 0x9b89
movl $0x1, %edi
movq %r13, %rsi
movq %rbp, %rdx
movl $0x3b, %ecx
movq %r15, %r9
xorl %eax, %eax
callq 0x4371
leaq 0x3f7b(%rip), %rdx      # 0x993e
leaq 0x210(%rsp), %r13
movl $0x800, %esi            # imm = 0x800
movq %r13, %rdi
movq %r12, %rcx
movq %r15, %r8
xorl %eax, %eax
callq 0x20b0
movq %r13, %rdi
callq 0x2270
leaq 0x7959(%rip), %rdi      # 0xd348
xorl %esi, %esi
movq %r13, %rdx
movl %eax, %ecx
xorl %r8d, %r8d
callq 0x284a
testl %eax, %eax
jle 0x5a2d
leaq 0x3c80(%rip), %rsi      # 0x9689
leaq 0x3c26(%rip), %rdx      # 0x9636
leaq 0x41a2(%rip), %r8       # 0x9bb9
movl $0x1, %edi
movl $0x44, %ecx
movl %eax, %r9d
xorl %eax, %eax
callq 0x4371
jmp 0x5a59
leaq 0x3bfc(%rip), %rsi      # 0x9630
leaq 0x3bfb(%rip), %rdx      # 0x9636
leaq 0x415b(%rip), %r8       # 0x9b9d
movl $0x3, %edi
movl $0x40, %ecx
xorl %eax, %eax
callq 0x4371
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
testl %r14d, %r14d
jne 0x6b63
pxor %xmm0, %xmm0
leaq 0x1e0(%rsp), %rdx
movdqa %xmm0, 0x10(%rdx)
movdqa %xmm0, (%rdx)
movq $0x0, 0x20(%rdx)
leaq 0x78c2(%rip), %rdi      # 0xd348
xorl %r14d, %r14d
xorl %esi, %esi
callq 0x2a4a
testl %eax, %eax
je 0x5ac4
movl %eax, %ebp
leaq 0x3b93(%rip), %rsi      # 0x9630
leaq 0x3b92(%rip), %rdx      # 0x9636
leaq 0x3bbf(%rip), %r8       # 0x966a
movl $0x3, %edi
movl $0x18a, %ecx            # imm = 0x18A
xorl %eax, %eax
callq 0x4371
movl %ebp, %r14d
jmp 0x6b63
pcmpeqd %xmm0, %xmm0
movdqa %xmm0, 0x110(%rsp)
movdqa %xmm0, 0x100(%rsp)
movdqa %xmm0, 0xf0(%rsp)
movdqa %xmm0, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
movdqa %xmm0, 0xc0(%rsp)
movdqa %xmm0, 0xb0(%rsp)
movdqa %xmm0, 0xa0(%rsp)
movl 0x1e0(%rsp), %r9d
leaq 0x3b6a(%rip), %rsi      # 0x9689
leaq 0x3b10(%rip), %rdx      # 0x9636
leaq 0x3b62(%rip), %r8       # 0x968f
movl $0x1, %edi
movl $0x18e, %ecx            # imm = 0x18E
xorl %eax, %eax
callq 0x4371
cmpb $0x0, 0x7843(%rip)      # 0xd388
jne 0x6b63
leaq 0x20(%rsp), %r13
xorl %r15d, %r15d
movq $0x0, 0x140(%rsp)
movq $0x7a120, 0x148(%rsp) # imm = 0x7A120
movl 0x1e0(%rsp), %eax
pxor %xmm0, %xmm0
movdqa %xmm0, 0x160(%rsp)
movdqa %xmm0, 0x170(%rsp)
movdqa %xmm0, 0x180(%rsp)
movdqa %xmm0, 0x190(%rsp)
movdqa %xmm0, 0x1a0(%rsp)
movdqa %xmm0, 0x1b0(%rsp)
movdqa %xmm0, 0x1c0(%rsp)
movdqa %xmm0, 0x1d0(%rsp)
testl %eax, %eax
js 0x5bd9
movl $0x1, %edx
movl %eax, %ecx
shlq %cl, %rdx
movl %eax, %ecx
shrl $0x6, %ecx
orq %rdx, 0x160(%rsp,%rcx,8)
xorl %edx, %edx
movl 0xa0(%rsp,%rdx,4), %ecx
testl %ecx, %ecx
js 0x5bf9
movl $0x1, %esi
shlq %cl, %rsi
shrl $0x6, %ecx
orq %rsi, 0x160(%rsp,%rcx,8)
incq %rdx
cmpq $0x20, %rdx
jne 0x5bdb
xorl %ecx, %ecx
xorl %edi, %edi
movl 0xa0(%rsp,%rcx,4), %edx
cmpl %edi, %edx
cmovgl %edx, %edi
incq %rcx
cmpq $0x20, %rcx
jne 0x5c06
cmpl %eax, %edi
cmovlel %eax, %edi
incl %edi
leaq 0x160(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
leaq 0x140(%rsp), %r8
callq 0x20f0
movl %eax, %r14d
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2090
testl %r14d, %r14d
je 0x5c59
jns 0x5c75
jmp 0x6b16
movq 0x7720(%rip), %rdi      # 0xd380
callq 0x21b0
cmpl $0x707, %r15d           # imm = 0x707
jge 0x6bc1
incl %r15d
testl %r14d, %r14d
jle 0x5ec3
xorl %r13d, %r13d
movl 0xa0(%rsp,%r13,4), %eax
cmpl $-0x1, %eax
je 0x5caa
leal 0x3f(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
sarl $0x6, %ecx
movslq %ecx, %rcx
movq 0x160(%rsp,%rcx,8), %rcx
btq %rax, %rcx
jb 0x5cb9
incq %r13
cmpq $0x20, %r13
jne 0x5c81
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
cmpl $-0x1, %r13d
je 0x5dde
movq %r15, 0x128(%rsp)
movslq %r13d, %rbp
leaq (%rsp,%rbp,4), %r15
addq $0xa0, %r15
movq %r15, %rdi
callq 0x80f8
movl (%r15), %r9d
testq %rax, %rax
setne 0x18(%rsp)
je 0x5dea
movq %rax, %r12
movl $0x1c00, %edx           # imm = 0x1C00
movl %r9d, %edi
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x2170
movq %rax, %r14
movl 0xa0(%rsp,%rbp,4), %r9d
movl %r14d, 0x8(%rsp)
movl %r13d, (%rsp)
xorl %edi, %edi
leaq 0x32e0(%rip), %rsi      # 0x9004
leaq 0x390b(%rip), %rdx      # 0x9636
movl $0x1b2, %ecx            # imm = 0x1B2
leaq 0x3a3e(%rip), %r8       # 0x9775
xorl %eax, %eax
callq 0x4371
testl %r14d, %r14d
jle 0x5e38
movl $0x15, %edi
movl %r14d, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x6fe8
movq %rax, %r15
movq %rax, %rdi
callq 0x2270
leaq (%rax,%rbx), %rdi
movl %r14d, %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
movq %rbx, %rsi
callq 0x23b0
movq %r15, %rdi
callq 0x2270
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x23b0
movq %r15, %rdi
xorl %r15d, %r15d
callq 0x2270
movl %r14d, %ecx
addl %eax, %ecx
leaq 0x75a2(%rip), %rdi      # 0xd348
xorl %esi, %esi
movq %rbx, %rdx
xorl %r8d, %r8d
callq 0x284a
xorl %edi, %edi
leaq 0x3248(%rip), %rsi      # 0x9004
leaq 0x3873(%rip), %rdx      # 0x9636
movl $0x1b9, %ecx            # imm = 0x1B9
leaq 0x39e1(%rip), %r8       # 0x97b0
movl %eax, %r9d
xorl %eax, %eax
callq 0x4371
jmp 0x5eb2
movb $0x1, %al
leaq 0x20(%rsp), %r13
jmp 0x5ebb
movl $0x3, %edi
leaq 0x383a(%rip), %rsi      # 0x9630
leaq 0x3839(%rip), %rdx      # 0x9636
movl $0x1aa, %ecx            # imm = 0x1AA
leaq 0x3938(%rip), %r8       # 0x9741
xorl %eax, %eax
callq 0x4371
cmpl $0x1f, %r13d
jg 0x5e1d
movl $0xffffffff, (%r15)     # imm = 0xFFFFFFFF
movl 0xa0(%rsp,%rbp,4), %edi
callq 0x20c0
leaq 0x20(%rsp), %r13
movq 0x128(%rsp), %r15
jmp 0x5eb7
callq 0x2400
movl (%rax), %edi
callq 0x2330
movl $0x3, %edi
leaq 0x37e0(%rip), %rsi      # 0x9630
leaq 0x37df(%rip), %rdx      # 0x9636
movl $0x1bb, %ecx            # imm = 0x1BB
leaq 0x3965(%rip), %r8       # 0x97c8
movq %rax, %r9
xorl %eax, %eax
callq 0x4371
movq %r15, %rdi
callq 0x80f8
movq %rax, %rdi
callq 0x806f
cmpl $0x1f, %r13d
jg 0x5e8a
movl $0xffffffff, (%r15)     # imm = 0xFFFFFFFF
movl 0xa0(%rsp,%rbp,4), %edi
callq 0x20c0
xorl %r15d, %r15d
movl $0x18ce5, %edi          # imm = 0x18CE5
leaq 0x393c(%rip), %rsi      # 0x97e1
xorl %edx, %edx
movq %r12, %rcx
movq %rbx, %r8
callq 0x6c33
leaq 0x20(%rsp), %r13
movb 0x18(%rsp), %al
testb %al, %al
je 0x631c
movq %r15, %r12
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2090
movq %r13, %rdi
xorl %esi, %esi
callq 0x2110
xorl %r14d, %r14d
leaq (%rbx,%r14), %r15
movq 0x7493(%rip), %rdi      # 0xd380
movl $0x1f4, %r8d            # imm = 0x1F4
movq %r15, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
callq 0x2230
cmpb $0x7b, (%rbx)
jne 0x5f84
cmpl $-0x1, %eax
jne 0x5f72
leaq 0x130(%rsp), %rbp
movq %rbp, %rdi
xorl %esi, %esi
callq 0x2110
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x150(%rsp), %rdx
callq 0x5760
imulq $0x3e8, 0x150(%rsp), %rcx # imm = 0x3E8
movabsq $0x20c49ba5e353f7cf, %rax # imm = 0x20C49BA5E353F7CF
imulq 0x158(%rsp)
movq %rdx, %r9
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x7, %r9
addq %rax, %r9
addq %rcx, %r9
cmpq $0x3e9, %r9             # imm = 0x3E9
jl 0x5ee6
jmp 0x5f8c
cmpb $0x7d, (%r15)
je 0x670a
incq %r14
jmp 0x5ee2
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
jmp 0x5fb6
movl %r14d, (%rsp)
movl $0x3, %edi
leaq 0x3694(%rip), %rsi      # 0x9630
leaq 0x3693(%rip), %rdx      # 0x9636
movl $0x152, %ecx            # imm = 0x152
leaq 0x3c26(%rip), %r8       # 0x9bd5
xorl %eax, %eax
callq 0x4371
testl %r14d, %r14d
js 0x6319
movl $0x0, 0x20(%rsp)
movl $0xa0, %edx
leaq 0x210(%rsp), %rdi
xorl %esi, %esi
callq 0x2090
movq %rbx, %rdi
movl $0x7b, %esi
callq 0x23c0
testq %rax, %rax
je 0x628e
movq %rax, %r12
movq %rbx, %rdi
movl $0x7d, %esi
callq 0x23c0
testq %rax, %rax
je 0x628e
movq %rax, %r15
subq %rbx, %r12
subl %ebx, %r15d
movslq %r12d, %rax
leaq (%rbx,%rax), %r12
subl %eax, %r15d
leal 0x1(%r15), %r13d
movq %r12, %rdi
movl %r13d, %esi
leaq 0x3bc6(%rip), %rdx      # 0x9bf4
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x38fb
testq %rax, %rax
je 0x628e
movq %rax, %rdi
callq 0x2380
movl %eax, 0x210(%rsp)
movq %r12, %rdi
movl %r13d, %esi
leaq 0x3ba0(%rip), %rdx      # 0x9bfd
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x38fb
testq %rax, %rax
je 0x607b
movq %rax, %rdi
callq 0x2380
movl %eax, 0x214(%rsp)
movq %r12, %rdi
movl %r13d, %esi
leaq 0x3b82(%rip), %rdx      # 0x9c0a
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x38fb
testq %rax, %rax
je 0x628e
movq %rax, %rdi
callq 0x2380
movl %eax, 0x218(%rsp)
movl $0x0, 0x20(%rsp)
movq %r12, %rdi
movl %r13d, %esi
leaq 0x3b57(%rip), %rdx      # 0x9c16
leaq 0x20(%rsp), %rcx
xorl %r8d, %r8d
callq 0x38fb
testq %rax, %rax
je 0x60f3
movl 0x20(%rsp), %ecx
cmpl $0x3f, %ecx
movl $0x3f, %edx
cmovgel %edx, %ecx
movslq %ecx, %rdx
leaq 0x21c(%rsp), %rdi
movq %rax, %rsi
callq 0x24b0
movq %r12, %rdi
movl %r13d, %esi
leaq 0x3b1d(%rip), %rdx      # 0x9c1d
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x38fb
testq %rax, %rax
je 0x611f
movq %rax, %rdi
callq 0x2300
movq %rax, 0x260(%rsp)
movl $0x0, 0x20(%rsp)
movq %r12, %rdi
movl %r13d, %esi
leaq 0x3af3(%rip), %rdx      # 0x9c27
leaq 0x20(%rsp), %r13
movq %r13, %rcx
xorl %r8d, %r8d
callq 0x38fb
testq %rax, %rax
je 0x616b
movl 0x20(%rsp), %ecx
cmpl $0x3f, %ecx
movl $0x3f, %edx
cmovgel %edx, %ecx
movslq %ecx, %rdx
leaq 0x268(%rsp), %rdi
movq %rax, %rsi
callq 0x24b0
addl $0x5, %r15d
movl %r15d, 0x2a8(%rsp)
xorl %r15d, %r15d
movl $0x1, %edi
leaq 0x3503(%rip), %rsi      # 0x9689
leaq 0x34a9(%rip), %rdx      # 0x9636
movl $0x9f, %ecx
leaq 0x3a94(%rip), %r8       # 0x9c2d
movq %rbx, %r9
xorl %eax, %eax
callq 0x4371
movl 0x210(%rsp), %eax
cmpl $0x4, %eax
jg 0x632e
testl %eax, %eax
je 0x649e
cmpl $0x4, %eax
jne 0x631c
movq %rbx, %rdi
callq 0x2270
leaq (%rax,%rbx), %rdx
movl 0x218(%rsp), %ecx
addl $0x4, %ecx
leaq 0x7167(%rip), %rdi      # 0xd348
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x27fc
xorl %eax, %eax
callq 0x7dd1
testl %eax, %eax
je 0x675c
pxor %xmm0, %xmm0
movdqa %xmm0, 0x20(%rsp)
movw $0x2, 0x20(%rsp)
movq 0x717e(%rip), %rax      # 0xd390
movzwl 0x38(%rax), %ecx
rolw $0x8, %cx
movw %cx, 0x22(%rsp)
movq 0x30(%rax), %rdi
callq 0x25e0
movl %eax, 0x24(%rsp)
movl $0x2, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x23d0
cmpl $-0x1, %eax
je 0x6818
movl %eax, %ebp
movl %eax, %edi
movq %r13, %rsi
movl $0x10, %edx
callq 0x23a0
cmpl $-0x1, %eax
je 0x684f
movl $0x1, %edi
leaq 0x341d(%rip), %rsi      # 0x9689
leaq 0x33c3(%rip), %rdx      # 0x9636
movl $0x61, %ecx
leaq 0x3a0f(%rip), %r8       # 0x9c8e
movl %ebp, %r9d
xorl %eax, %eax
callq 0x4371
jmp 0x6890
movl $0x3, %edi
leaq 0x3396(%rip), %r15      # 0x9630
movq %r15, %rsi
leaq 0x3392(%rip), %r12      # 0x9636
movq %r12, %rdx
movl $0xa2, %ecx
leaq 0x398a(%rip), %r8       # 0x9c3d
movq %rbx, %r9
xorl %eax, %eax
callq 0x4371
leaq 0x7084(%rip), %rdi      # 0xd348
xorl %esi, %esi
movq %rbx, %rdx
movl $0x2000, %ecx           # imm = 0x2000
xorl %r8d, %r8d
callq 0x27fc
movl $0x3, %edi
movq %r15, %rsi
xorl %r15d, %r15d
movq %r12, %rdx
movl $0x1cc, %ecx            # imm = 0x1CC
leaq 0x3504(%rip), %r8       # 0x97f4
movl %eax, %r9d
xorl %eax, %eax
callq 0x4371
movl $0x18ce1, %edi          # imm = 0x18CE1
leaq 0x351b(%rip), %rsi      # 0x9821
xorl %edx, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x6c33
leaq 0x20(%rsp), %r13
jmp 0x631c
movq %r12, %r15
cmpb $0x0, 0x7065(%rip)      # 0xd388
je 0x5b53
jmp 0x6b63
cmpl $0x5, %eax
je 0x659a
cmpl $0x16, %eax
jne 0x631c
leaq 0x268(%rsp), %rbp
movq %rbp, %rdi
callq 0x81ad
testl %eax, %eax
js 0x6796
movl %eax, %r15d
movl 0x218(%rsp), %r9d
movq %rbp, (%rsp)
xorl %r13d, %r13d
xorl %edi, %edi
leaq 0x2c95(%rip), %rsi      # 0x9004
leaq 0x32c0(%rip), %rdx      # 0x9636
movl $0x216, %ecx            # imm = 0x216
leaq 0x3694(%rip), %r8       # 0x9a16
xorl %eax, %eax
callq 0x4371
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2090
movl 0x218(%rsp), %r9d
movl %r9d, %r12d
subl %r13d, %r12d
jbe 0x6731
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2090
movq 0x6fbe(%rip), %rdi      # 0xd380
movl $0x2000, %eax           # imm = 0x2000
cmpl %eax, %r12d
cmovael %eax, %r12d
movl $0x3e8, %r8d            # imm = 0x3E8
movq %rbx, %rsi
movl %r12d, %edx
movl $0x1, %ecx
callq 0x2230
cmpl $-0x1, %eax
je 0x6398
movl %eax, %r12d
addl %eax, %r13d
xorl %ebp, %ebp
movl %r12d, %eax
subl %ebp, %eax
jle 0x6398
movslq %ebp, %rsi
addq %rbx, %rsi
movslq %eax, %rdx
movl %r15d, %edi
xorl %ecx, %ecx
callq 0x2440
addl %eax, %ebp
cmpl $-0x1, %eax
jne 0x63f1
movl $0x0, (%rsp)
movl $0x1, %edi
leaq 0x3264(%rip), %rsi      # 0x9689
leaq 0x320a(%rip), %rdx      # 0x9636
movl $0x224, %ecx            # imm = 0x224
leaq 0x3605(%rip), %r8       # 0x9a3d
movl %r12d, %r9d
xorl %eax, %eax
callq 0x4371
leaq 0x268(%rsp), %rbp
movq %rbp, %rdi
callq 0x806f
xorl %eax, %eax
cmpl %r15d, 0xa0(%rsp,%rax,4)
jne 0x6469
movl $0xffffffff, 0xa0(%rsp,%rax,4) # imm = 0xFFFFFFFF
incq %rax
cmpq $0x20, %rax
jne 0x6454
movl %r15d, %edi
callq 0x20c0
movl $0x18ce5, %edi          # imm = 0x18CE5
leaq 0x335b(%rip), %rsi      # 0x97e1
leaq 0x21c(%rsp), %rdx
movq %rbp, %rcx
movq %rbx, %r8
callq 0x6c33
jmp 0x6398
movq %rbx, %rdi
callq 0x2270
leaq (%rax,%rbx), %rdx
movl 0x218(%rsp), %ecx
xorl %r15d, %r15d
leaq 0x6e8d(%rip), %rdi      # 0xd348
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x27fc
movl %eax, %r14d
movq %rbx, (%rsp)
xorl %edi, %edi
leaq 0x2b2f(%rip), %rsi      # 0x9004
leaq 0x315a(%rip), %rdx      # 0x9636
movl $0x230, %ecx            # imm = 0x230
leaq 0x35a1(%rip), %r8       # 0x9a89
movl %eax, %r9d
xorl %eax, %eax
callq 0x4371
movdqu 0x21c(%rsp), %xmm0
pcmpeqb 0x310d(%rip), %xmm0     # 0x9610
movdqu 0x221(%rsp), %xmm1
pcmpeqb 0x30ec(%rip), %xmm1     # 0x9600
pand %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x631c
movl 0x218(%rsp), %esi
movl 0x2a8(%rsp), %r15d
addq %rbx, %r15
xorl %eax, %eax
movl %eax, 0x20(%rsp)
movl %eax, 0x130(%rsp)
movq %r15, %rdi
leaq 0x3787(%rip), %rdx      # 0x9cd7
movq %r13, %rcx
leaq 0x130(%rsp), %r8
callq 0x38fb
testq %rax, %rax
je 0x6be8
cmpl $0x0, 0x20(%rsp)
jle 0x6be8
cmpl $0x3, 0x130(%rsp)
jne 0x6be8
movq %rax, %rdi
callq 0x2380
testl %eax, %eax
jne 0x6be8
xorl %r15d, %r15d
jmp 0x631c
movq %rbx, %rdi
callq 0x2270
leaq (%rax,%rbx), %rdx
movl 0x218(%rsp), %ecx
leaq 0x6d94(%rip), %rdi      # 0xd348
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x27fc
leaq 0x268(%rsp), %rbp
movq %rbp, %rdi
callq 0x81ad
testl %eax, %eax
js 0x67d2
movl %eax, %r15d
xorl %eax, %eax
cmpl %r15d, 0xa0(%rsp,%rax,4)
jne 0x65f0
movl $0xffffffff, 0xa0(%rsp,%rax,4) # imm = 0xFFFFFFFF
incq %rax
cmpq $0x20, %rax
jne 0x65db
movl %r15d, %edi
callq 0x20c0
movq %rbp, %rdi
callq 0x806f
pxor %xmm0, %xmm0
movdqa %xmm0, 0x90(%rsp)
movdqa %xmm0, 0x80(%rsp)
movdqa %xmm0, 0x70(%rsp)
movdqa %xmm0, 0x60(%rsp)
movdqa %xmm0, 0x50(%rsp)
movdqa %xmm0, 0x40(%rsp)
movdqa %xmm0, 0x30(%rsp)
movdqa %xmm0, 0x20(%rsp)
movl $0x7f, %esi
movq %r13, %rdi
leaq 0x32c2(%rip), %rdx      # 0x9914
movq %rbp, %rcx
xorl %eax, %eax
callq 0x20b0
xorl %edi, %edi
movq %r13, %rsi
leaq 0x335b(%rip), %rdx      # 0x99c3
callq 0x7094
movq %rax, %r12
movq %rax, %rdi
callq 0x2270
xorl %edi, %edi
movl %eax, %esi
leaq 0x21c(%rsp), %rdx
movq %rbp, %rcx
callq 0x6fe8
movq %rax, %rbp
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2090
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
leaq 0x3291(%rip), %rdx      # 0x993e
movq %rbp, %rcx
movq %r12, %r8
xorl %eax, %eax
callq 0x20b0
movq %rbx, %rdi
callq 0x2270
leaq 0x6c7f(%rip), %rdi      # 0xd348
xorl %esi, %esi
movq %rbx, %rdx
movl %eax, %ecx
xorl %r8d, %r8d
callq 0x284a
movq %rbx, (%rsp)
xorl %edi, %edi
leaq 0x291f(%rip), %rsi      # 0x9004
leaq 0x2f4a(%rip), %rdx      # 0x9636
movl $0x20c, %ecx            # imm = 0x20C
leaq 0x32e4(%rip), %r8       # 0x99dc
movl %r15d, %r9d
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x4371
jmp 0x631c
movq 0x6c6f(%rip), %rdi      # 0xd380
incq %r15
movl $0x3e8, %r8d            # imm = 0x3E8
movq %r15, %rsi
movl $0x4, %edx
movl $0x1, %ecx
callq 0x2230
jmp 0x5fb6
xorl %r15d, %r15d
xorl %edi, %edi
leaq 0x28c7(%rip), %rsi      # 0x9004
leaq 0x2ef2(%rip), %rdx      # 0x9636
movl $0x22d, %ecx            # imm = 0x22D
leaq 0x3323(%rip), %r8       # 0x9a73
xorl %eax, %eax
callq 0x4371
jmp 0x6312
xorl %r15d, %r15d
movl $0x3, %edi
leaq 0x2ec5(%rip), %rsi      # 0x9630
leaq 0x2ec4(%rip), %rdx      # 0x9636
movl $0x1d3, %ecx            # imm = 0x1D3
leaq 0x30bf(%rip), %r8       # 0x983d
xorl %eax, %eax
callq 0x4371
movl $0x18ce2, %edi          # imm = 0x18CE2
leaq 0x30c5(%rip), %rsi      # 0x9856
jmp 0x68e6
movl $0x18ce3, %edi          # imm = 0x18CE3
leaq 0x31e1(%rip), %rsi      # 0x9983
leaq 0x21c(%rsp), %rdx
movq %rbp, %rcx
movq %rbx, %r8
callq 0x6c33
xorl %r15d, %r15d
movl $0x3, %edi
leaq 0x2e6c(%rip), %rsi      # 0x9630
leaq 0x2e6b(%rip), %rdx      # 0x9636
movl $0x211, %ecx            # imm = 0x211
jmp 0x680c
movl $0x18ce3, %edi          # imm = 0x18CE3
leaq 0x31a5(%rip), %rsi      # 0x9983
leaq 0x21c(%rsp), %rdx
movq %rbp, %rcx
movq %rbx, %r8
callq 0x6c33
xorl %r15d, %r15d
movl $0x3, %edi
leaq 0x2e30(%rip), %rsi      # 0x9630
leaq 0x2e2f(%rip), %rdx      # 0x9636
movl $0x1fc, %ecx            # imm = 0x1FC
leaq 0x319b(%rip), %r8       # 0x99ae
jmp 0x697e
callq 0x2400
movl (%rax), %edi
callq 0x2330
movl $0x3, %edi
leaq 0x2e00(%rip), %rsi      # 0x9630
leaq 0x2dff(%rip), %rdx      # 0x9636
movl $0x57, %ecx
leaq 0x341a(%rip), %r8       # 0x9c5d
movq %rax, %r9
xorl %eax, %eax
callq 0x4371
jmp 0x688b
callq 0x2400
movl (%rax), %edi
callq 0x2330
movl $0x3, %edi
leaq 0x2dc9(%rip), %rsi      # 0x9630
leaq 0x2dc8(%rip), %rdx      # 0x9636
movl $0x5d, %ecx
leaq 0x33fd(%rip), %r8       # 0x9c77
movq %rax, %r9
xorl %eax, %eax
callq 0x4371
movl %ebp, %edi
callq 0x20c0
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %r15d, %r15d
cmpl $-0x1, %ebp
je 0x68b4
cmpl $-0x1, 0xa0(%rsp,%r15,4)
je 0x68fd
incq %r15
cmpq $0x20, %r15
jne 0x6898
movl $0x20, %r15d
jmp 0x6931
movl $0x3, %edi
leaq 0x2d70(%rip), %rsi      # 0x9630
leaq 0x2d6f(%rip), %rdx      # 0x9636
movl $0x1da, %ecx            # imm = 0x1DA
leaq 0x2fa8(%rip), %r8       # 0x987b
xorl %eax, %eax
callq 0x4371
movl $0x18ce4, %edi          # imm = 0x18CE4
leaq 0x2fb9(%rip), %rsi      # 0x989f
leaq 0x21c(%rsp), %rdx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x6c33
jmp 0x631c
movl %ebp, 0xa0(%rsp,%r15,4)
movl %ebp, (%rsp)
movl $0x1, %edi
leaq 0x2d75(%rip), %rsi      # 0x9689
leaq 0x2d1b(%rip), %rdx      # 0x9636
movl $0xc9, %ecx
leaq 0x3398(%rip), %r8       # 0x9cbf
movl %r15d, %r9d
xorl %eax, %eax
callq 0x4371
cmpl $0x20, %r15d
jne 0x698a
xorl %r15d, %r15d
movl $0x18ce4, %edi          # imm = 0x18CE4
leaq 0x2f78(%rip), %rsi      # 0x98be
leaq 0x21c(%rsp), %rdx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x6c33
movl %ebp, %edi
callq 0x20c0
movl $0x3, %edi
leaq 0x2cc5(%rip), %rsi      # 0x9630
leaq 0x2cc4(%rip), %rdx      # 0x9636
movl $0x1e2, %ecx            # imm = 0x1E2
leaq 0x2f56(%rip), %r8       # 0x98d4
xorl %eax, %eax
callq 0x4371
jmp 0x631c
movslq %r15d, %r13
leaq (%rsp,%r13,4), %rdi
addq $0xa0, %rdi
callq 0x7e3f
testq %rax, %rax
je 0x6acd
movq %rax, %rcx
pxor %xmm0, %xmm0
movdqa %xmm0, 0x90(%rsp)
movdqa %xmm0, 0x80(%rsp)
movdqa %xmm0, 0x70(%rsp)
movdqa %xmm0, 0x60(%rsp)
movdqa %xmm0, 0x50(%rsp)
movdqa %xmm0, 0x40(%rsp)
movdqa %xmm0, 0x30(%rsp)
movdqa %xmm0, 0x20(%rsp)
movl $0x7f, %esi
leaq 0x20(%rsp), %r12
movq %r12, %rdi
leaq 0x2f1d(%rip), %rdx      # 0x9914
movq %rax, %rbp
xorl %eax, %eax
callq 0x20b0
xorl %edi, %edi
movq %r12, %rsi
leaq 0x2f1c(%rip), %rdx      # 0x9929
callq 0x7094
movq %rax, %r12
movq %rax, %rdi
callq 0x2270
xorl %edi, %edi
movl %eax, %esi
leaq 0x21c(%rsp), %rdx
movq %rbp, %rcx
callq 0x6fe8
movq %rax, 0x18(%rsp)
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x2090
movl $0x2000, %esi           # imm = 0x2000
movq %rbx, %rdi
leaq 0x2eea(%rip), %rdx      # 0x993e
movq 0x18(%rsp), %rcx
movq %r12, %r8
leaq 0x2bd3(%rip), %r12      # 0x9636
xorl %eax, %eax
callq 0x20b0
movq %rbx, %rdi
callq 0x2270
leaq 0x68cf(%rip), %rdi      # 0xd348
xorl %esi, %esi
movq %rbx, %rdx
movl %eax, %ecx
xorl %r8d, %r8d
callq 0x284a
movl 0xa0(%rsp,%r13,4), %r9d
leaq 0x20(%rsp), %r13
movq %rbx, 0x8(%rsp)
movl %r15d, (%rsp)
xorl %r15d, %r15d
xorl %edi, %edi
leaq 0x255a(%rip), %rsi      # 0x9004
movq %r12, %rdx
movl $0x1f5, %ecx            # imm = 0x1F5
leaq 0x2e8a(%rip), %r8       # 0x9943
xorl %eax, %eax
callq 0x4371
movq %rbp, %rdi
callq 0x2250
jmp 0x631c
movl %ebp, %edi
callq 0x20c0
xorl %r15d, %r15d
movl $0x3, %edi
leaq 0x2b4d(%rip), %rsi      # 0x9630
leaq 0x2b4c(%rip), %rdx      # 0x9636
movl $0x1e9, %ecx            # imm = 0x1E9
leaq 0x2df5(%rip), %r8       # 0x98eb
xorl %eax, %eax
callq 0x4371
movl $0x18ce4, %edi          # imm = 0x18CE4
leaq 0x2dfe(%rip), %rsi      # 0x9907
leaq 0x21c(%rsp), %rdx
jmp 0x6308
callq 0x2400
movl (%rax), %edi
callq 0x2330
leaq 0x2b07(%rip), %rsi      # 0x9630
leaq 0x2b06(%rip), %rdx      # 0x9636
leaq 0x2bc4(%rip), %r8       # 0x96fb
movl $0x3, %edi
movl $0x19e, %ecx            # imm = 0x19E
movq %rax, %r9
xorl %eax, %eax
callq 0x4371
leaq 0x2bd9(%rip), %rsi      # 0x972b
movl $0x18ce6, %edi          # imm = 0x18CE6
xorl %edx, %edx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x6c33
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x7da5
leaq 0x67d4(%rip), %rdi      # 0xd348
callq 0x2898
movl 0xa0(%rsp,%r15,4), %edi
testl %edi, %edi
jle 0x6b96
callq 0x20c0
movl $0xffffffff, 0xa0(%rsp,%r15,4) # imm = 0xFFFFFFFF
incq %r15
cmpq $0x20, %r15
jne 0x6b79
testq %rbx, %rbx
je 0x6bac
movq %rbx, %rdi
callq 0x2250
movl %r14d, %eax
addq $0xa18, %rsp            # imm = 0xA18
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2ac1(%rip), %rsi      # 0x9689
leaq 0x2a67(%rip), %rdx      # 0x9636
leaq 0x2ae1(%rip), %r8       # 0x96b7
xorl %r14d, %r14d
movl $0x1, %edi
movl $0x19a, %ecx            # imm = 0x19A
jmp 0x5922
leaq 0x2a41(%rip), %r12      # 0x9630
leaq 0x2a40(%rip), %r13      # 0x9636
leaq 0x30df(%rip), %r8       # 0x9cdc
movl $0x3, %edi
movq %r12, %rsi
movq %r13, %rdx
movl $0xad, %ecx
movq %r15, %r9
xorl %eax, %eax
callq 0x4371
leaq 0x2e97(%rip), %r8       # 0x9ab5
movl $0x3, %edi
movq %r12, %rsi
movq %r13, %rdx
movl $0x233, %ecx            # imm = 0x233
jmp 0x5922