// File: /workspace/github_cpp_makefile_star2_O1/guoxuanhan[P]NetServer/httpsession.cpp
// Function: HttpSession::HttpProcess(_HttpRequestContext const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
void HttpSession::HttpProcess(const HttpRequestContext &httprequestcontext, std::string &responsecontext)
{
    //std::cout << "HttpServer::HttpProcess" << std::endl;
    std::string responsebody;
    std::string errormsg;
    std::string path;
    std::string querystring;

    if("GET" == httprequestcontext.method)
    {
        ;
    }
    else if("POST" == httprequestcontext.method)
    {
        ;
    }
    else
    {
        std::cout << "HttpServer::HttpParser" << std::endl;
        errormsg = "Method Not Implemented";
        HttpError(501, "Method Not Implemented", httprequestcontext, responsecontext);
        return;
    }

    size_t pos = httprequestcontext.url.find("?");
    if(pos != std::string::npos)
    {
        path = httprequestcontext.url.substr(0, pos);
        querystring = httprequestcontext.url.substr(pos+1);
    }
    else
    {
        path = httprequestcontext.url;
    }

    //keepalive判断处理
    std::map<std::string, std::string>::const_iterator iter = httprequestcontext.header.find("Connection");
    if(iter != httprequestcontext.header.end())
    {
        keepalive_ = (iter->second == "Keep-Alive");
    }
    else
    {
        if(httprequestcontext.version == "HTTP/1.1")
        {
            keepalive_ = true;//HTTP/1.1默认长连接
        }
        else
        {
            keepalive_ = false;//HTTP/1.0默认短连接
        }
    }


    if("/" == path)
    {
        path = "/index.html";
    }
    else if("/hello" == path)
    {
        //Wenbbench 测试用
        std::string filetype("text/html");
        responsebody = ("hello world");
        responsecontext += httprequestcontext.version + " 200 OK\r\n";
        responsecontext += "Server: GuoJ's NetServer/0.1\r\n";
        responsecontext += "Content-Type: " + filetype + "; charset=utf-8\r\n";
        if(iter != httprequestcontext.header.end())
        {
            responsecontext += "Connection: " + iter->second + "\r\n";
        }
        responsecontext += "Content-Length: " + std::to_string(responsebody.size()) + "\r\n";
        responsecontext += "\r\n";
        responsecontext += responsebody;
        return;
    }
    else
    {
        ;
    }

    //std::string responsebody;
    path.insert(0,".");
    FILE* fp = NULL;
    if((fp = fopen(path.c_str(), "rb")) == NULL)
    {
        //perror("error fopen");
        //404 NOT FOUND
        HttpError(404, "Not Found", httprequestcontext, responsecontext);
        return;
    }
    else
    {
        char buffer[4096];
        memset(buffer, 0, sizeof(buffer));
        while(fread(buffer, sizeof(buffer), 1, fp) == 1)//可以mmap内存映射优化
        {
            responsebody.append(buffer);
            memset(buffer, 0, sizeof(buffer));
        }
        if(feof(fp))
        {
            responsebody.append(buffer);
        }
        else
        {
            std::cout << "error fread" << std::endl;
        }
        fclose(fp);
    }

    std::string filetype("text/html"); //暂时固定为html
    responsecontext += httprequestcontext.version + " 200 OK\r\n";
    responsecontext += "Server: GuoJ's NetServer/0.1\r\n";
    responsecontext += "Content-Type: " + filetype + "; charset=utf-8\r\n";
    if(iter != httprequestcontext.header.end())
    {
        responsecontext += "Connection: " + iter->second + "\r\n";
    }
    responsecontext += "Content-Length: " + std::to_string(responsebody.size()) + "\r\n";
    responsecontext += "\r\n";
    responsecontext += responsebody;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1138, %rsp           # imm = 0x1138
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r12
leaq 0x58(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xe0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x78(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xc0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x78f3(%rip), %rsi      # 0x10ad0
movq %r15, %rdi
callq 0x40c0
testl %eax, %eax
je 0x92b6
leaq 0x78e0(%rip), %rsi      # 0x10ad4
movq %r15, %rdi
callq 0x40c0
testl %eax, %eax
je 0x92b6
movq 0xedad(%rip), %r14      # 0x17fb8
leaq 0x78c7(%rip), %rsi      # 0x10ad9
movl $0x16, %edx
movq %r14, %rdi
callq 0x43a0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x4320
movsbl %al, %esi
movq 0xed7b(%rip), %rdi      # 0x17fb8
callq 0x4030
movq %rax, %rdi
callq 0x4240
leaq 0xd0(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x7893(%rip), %rcx      # 0x10af0
movl $0x16, %r8d
xorl %esi, %esi
callq 0x44b0
leaq 0x120(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x7873(%rip), %rsi      # 0x10af0
leaq 0x7882(%rip), %rdx      # 0x10b06
leaq 0x110(%rsp), %rdi
callq 0x613c
leaq 0x110(%rsp), %rdx
movl $0x1f5, %esi            # imm = 0x1F5
movq %r15, %rcx
movq %rbx, %r8
callq 0x9f26
movq 0x110(%rsp), %rdi
jmp 0x965c
leaq 0x20(%r15), %r14
leaq 0x7846(%rip), %rsi      # 0x10b07
movl $0x1, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x4590
cmpq $-0x1, %rax
je 0x9361
movq %rax, %r13
leaq 0x130(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x4360
leaq 0x68(%rsp), %rdi
leaq 0x130(%rsp), %rbp
movq %rbp, %rsi
callq 0x4400
movq (%rbp), %rdi
leaq 0x140(%rsp), %rbp
cmpq %rbp, %rdi
je 0x931d
callq 0x4310
incq %r13
leaq 0x130(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
movq $-0x1, %rcx
callq 0x4360
leaq 0xb0(%rsp), %rdi
leaq 0x130(%rsp), %r14
movq %r14, %rsi
callq 0x4400
movq (%r14), %rdi
cmpq %rbp, %rdi
je 0x936e
callq 0x4310
jmp 0x936e
leaq 0x68(%rsp), %rdi
movq %r14, %rsi
callq 0x41e0
leaq 0x140(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x7788(%rip), %rsi      # 0x10b09
leaq 0x778b(%rip), %rdx      # 0x10b13
leaq 0x130(%rsp), %rdi
callq 0x613c
leaq 0x60(%r15), %rdi
leaq 0x130(%rsp), %rsi
callq 0xac3a
movq %rax, %r14
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x93c3
callq 0x4310
leaq 0x68(%r15), %r13
cmpq %r13, %r14
je 0x93d9
leaq 0x40(%r14), %rdi
leaq 0x773d(%rip), %rsi      # 0x10b14
jmp 0x93e4
leaq 0x40(%r15), %rdi
leaq 0x773b(%rip), %rsi      # 0x10b1f
callq 0x40c0
testl %eax, %eax
sete 0x158(%r12)
leaq 0x772d(%rip), %rsi      # 0x10b28
leaq 0x68(%rsp), %rdi
callq 0x40c0
testl %eax, %eax
je 0x951d
leaq 0x7722(%rip), %rsi      # 0x10b36
leaq 0x68(%rsp), %rdi
callq 0x40c0
testl %eax, %eax
jne 0x953a
leaq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
movq %rax, (%rdi)
leaq 0x76fd(%rip), %rsi      # 0x10b3d
leaq 0x76ff(%rip), %rdx      # 0x10b46
callq 0x613c
leaq 0x48(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x76eb(%rip), %rcx      # 0x10b47
movl $0xb, %r8d
xorl %esi, %esi
callq 0x44b0
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%r15), %rsi
movq 0x48(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x7ab4
leaq 0x76c4(%rip), %rsi      # 0x10b53
leaq 0x8(%rsp), %rdi
callq 0x45f0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x94ba
callq 0x4310
leaq 0x769c(%rip), %rsi      # 0x10b5d
movq %rbx, %rdi
callq 0x45f0
leaq 0x76ac(%rip), %rsi      # 0x10b7c
leaq 0x28(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0xa8aa
leaq 0x76a2(%rip), %rsi      # 0x10b8b
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x995f
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9967
leaq 0x68(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x75fd(%rip), %rcx      # 0x10b2a
movl $0xb, %r8d
xorl %esi, %esi
callq 0x44b0
leaq 0x7aee(%rip), %rcx      # 0x1102f
leaq 0x68(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4390
movq 0x68(%rsp), %rdi
leaq 0x765a(%rip), %rsi      # 0x10bbb
callq 0x43d0
testq %rax, %rax
je 0x9615
movq %rax, %r12
movq %r13, 0xa8(%rsp)
leaq 0x130(%rsp), %r13
movl $0x1000, %edx           # imm = 0x1000
movq %r13, %rdi
xorl %esi, %esi
callq 0x41f0
movl $0x1000, %esi           # imm = 0x1000
movl $0x1, %edx
movq %r13, %rdi
movq %r12, %rcx
callq 0x4490
cmpq $0x1, %rax
jne 0x95ee
leaq 0x48(%rsp), %r13
leaq 0x130(%rsp), %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x45f0
movl $0x1000, %edx           # imm = 0x1000
movq %rbp, %rdi
xorl %esi, %esi
callq 0x41f0
movl $0x1000, %esi           # imm = 0x1000
movl $0x1, %edx
movq %rbp, %rdi
movq %r12, %rcx
callq 0x4490
cmpq $0x1, %rax
je 0x95b9
movq %r12, %rdi
callq 0x44c0
testl %eax, %eax
je 0x96d4
leaq 0x48(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x45f0
jmp 0x971b
leaq 0x100(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x7596(%rip), %rsi      # 0x10bbe
leaq 0x7598(%rip), %rdx      # 0x10bc7
leaq 0xf0(%rsp), %rdi
callq 0x613c
leaq 0xf0(%rsp), %rdx
movl $0x194, %esi            # imm = 0x194
movq %r15, %rcx
movq %rbx, %r8
callq 0x9f26
movq 0xf0(%rsp), %rdi
cmpq %r14, %rdi
je 0x9666
callq 0x4310
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x9680
callq 0x4310
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x9694
callq 0x4310
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x96ae
callq 0x4310
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x96c2
callq 0x4310
addq $0x1138, %rsp           # imm = 0x1138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xe8dd(%rip), %r13      # 0x17fb8
leaq 0x74e6(%rip), %rsi      # 0x10bc8
movl $0xb, %edx
movq %r13, %rdi
callq 0x43a0
movq (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x4320
movsbl %al, %esi
movq 0xe8aa(%rip), %rdi      # 0x17fb8
callq 0x4030
movq %rax, %rdi
callq 0x4240
movq %r12, %rdi
callq 0x4340
leaq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
movq %rax, (%rdi)
leaq 0x7400(%rip), %rsi      # 0x10b3d
leaq 0x7402(%rip), %rdx      # 0x10b46
callq 0x613c
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%r15), %rsi
movq 0x48(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x7ab4
leaq 0x73e4(%rip), %rsi      # 0x10b53
leaq 0x8(%rsp), %rdi
callq 0x45f0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x979a
callq 0x4310
leaq 0x73bc(%rip), %rsi      # 0x10b5d
movq %rbx, %rdi
callq 0x45f0
leaq 0x73cc(%rip), %rsi      # 0x10b7c
leaq 0x28(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0xa8aa
leaq 0x73c2(%rip), %rsi      # 0x10b8b
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x97f6
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x97fe
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9837
callq 0x4310
leaq 0x38(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x984a
callq 0x4310
cmpq 0xa8(%rsp), %r14
je 0x98f4
addq $0x40, %r14
leaq 0x733a(%rip), %rsi      # 0x10b9d
leaq 0x28(%rsp), %rdi
movq %r14, %rdx
callq 0xa8aa
leaq 0x71e2(%rip), %rsi      # 0x10a59
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x98a4
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x98ac
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x98e5
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x98f4
callq 0x4310
movq 0x50(%rsp), %r14
movl $0x1, %esi
cmpq $0xa, %r14
jb 0x9a19
movl $0x4, %esi
movabsq $0x346dc5d63886594b, %rdi # imm = 0x346DC5D63886594B
movq %r14, %rcx
cmpq $0x63, %rcx
jbe 0x9a12
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x9a17
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x9a19
movq %rcx, %rax
mulq %rdi
shrq $0xb, %rdx
addl $0x4, %esi
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x991a
addl $-0x3, %esi
jmp 0x9a19
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq %r13, %r15
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x99a3
callq 0x4310
leaq 0x38(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x99b6
callq 0x4310
cmpq %r15, %r14
je 0x9bb4
addq $0x40, %r14
leaq 0x71d3(%rip), %rsi      # 0x10b9d
leaq 0x28(%rsp), %rdi
movq %r14, %rdx
callq 0xa8aa
leaq 0x707b(%rip), %rsi      # 0x10a59
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9b64
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9b6c
addl $-0x2, %esi
jmp 0x9a19
decl %esi
movl %esi, %esi
leaq 0x98(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x88(%rsp), %rdi
xorl %edx, %edx
callq 0x43c0
leaq 0x88(%rsp), %r15
movq (%r15), %rdi
movl 0x8(%r15), %esi
movq %r14, %rdx
callq 0xa92b
leaq 0x7156(%rip), %rcx      # 0x10baa
movl $0x10, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4390
movq %r13, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9a89
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x9a91
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x6fa5(%rip), %rsi      # 0x10a59
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9adc
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9ae4
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9b1d
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9b2c
callq 0x4310
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
je 0x9b3e
callq 0x4310
leaq 0x6f14(%rip), %rsi      # 0x10a59
movq %rbx, %rdi
callq 0x45f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
jmp 0x9d59
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9ba5
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9bb4
callq 0x4310
movq 0x50(%rsp), %r14
movl $0x1, %esi
cmpq $0xa, %r14
jb 0x9c13
movl $0x4, %esi
movabsq $0x346dc5d63886594b, %rdi # imm = 0x346DC5D63886594B
movq %r14, %rcx
cmpq $0x63, %rcx
jbe 0x9c0c
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x9c11
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x9c13
movq %rcx, %rax
mulq %rdi
shrq $0xb, %rdx
addl $0x4, %esi
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x9bd6
addl $-0x3, %esi
jmp 0x9c13
addl $-0x2, %esi
jmp 0x9c13
decl %esi
movl %esi, %esi
leaq 0x98(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x88(%rsp), %rdi
xorl %edx, %edx
callq 0x43c0
leaq 0x88(%rsp), %r15
movq (%r15), %rdi
movl 0x8(%r15), %esi
movq %r14, %rdx
callq 0xa92b
leaq 0x6f5c(%rip), %rcx      # 0x10baa
movl $0x10, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4390
movq %r13, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9c83
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x9c8b
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x6dab(%rip), %rsi      # 0x10a59
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9cd6
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9cde
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9d17
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9d26
callq 0x4310
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
je 0x9d38
callq 0x4310
leaq 0x6d1a(%rip), %rsi      # 0x10a59
movq %rbx, %rdi
callq 0x45f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
jne 0x9661
jmp 0x9666
jmp 0x9dc9
jmp 0x9ddd
jmp 0x9e9e
jmp 0x9dfd
jmp 0x9e11
jmp 0x9e25
jmp 0x9e9e
jmp 0x9e39
jmp 0x9e4d
jmp 0x9e9e
jmp 0x9e64
jmp 0x9e64
jmp 0x9e9e
jmp 0x9ebf
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
jmp 0x9e8b
jmp 0x9ebf
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9de0
callq 0x4310
jmp 0x9de0
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
jne 0x9e71
jmp 0x9ea1
jmp 0x9e9e
jmp 0x9ebf
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9e14
callq 0x4310
jmp 0x9e14
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9e28
callq 0x4310
jmp 0x9e28
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
jne 0x9e71
jmp 0x9ea1
jmp 0x9e9e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9e50
callq 0x4310
jmp 0x9e50
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x9e71
jmp 0x9ea1
jmp 0x9e9e
jmp 0x9e64
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9ea1
callq 0x4310
jmp 0x9ea1
jmp 0x9e9e
jmp 0x9ebf
jmp 0x9ebf
jmp 0x9ebf
movq %rax, %rbx
movq 0x110(%rsp), %rdi
cmpq %r14, %rdi
jne 0x9eb6
jmp 0x9ec2
jmp 0x9ebf
jmp 0x9e9e
jmp 0x9e9e
jmp 0x9ebf
jmp 0x9ebf
jmp 0x9ebf
movq %rax, %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x9ec2
callq 0x4310
jmp 0x9ec2
jmp 0x9ebf
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x9edc
callq 0x4310
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x9ef0
callq 0x4310
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x9f0a
callq 0x4310
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x9f1e
callq 0x4310
movq %rbx, %rdi
callq 0x45a0