// File: /workspace/github_cpp_makefile_star2_O3/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 0x7930(%rip), %rsi      # 0x10ac3
movq %r15, %rdi
callq 0x40c0
testl %eax, %eax
je 0x926c
leaq 0x791d(%rip), %rsi      # 0x10ac7
movq %r15, %rdi
callq 0x40c0
testl %eax, %eax
je 0x926c
movq 0xedf7(%rip), %r14      # 0x17fb8
leaq 0x7904(%rip), %rsi      # 0x10acc
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 0xedc5(%rip), %rdi      # 0x17fb8
callq 0x4030
movq %rax, %rdi
callq 0x4240
leaq 0xd0(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x78d0(%rip), %rcx      # 0x10ae3
movl $0x16, %r8d
xorl %esi, %esi
callq 0x44b0
leaq 0x120(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x78b0(%rip), %rsi      # 0x10ae3
leaq 0x78bf(%rip), %rdx      # 0x10af9
leaq 0x110(%rsp), %rdi
callq 0x6112
leaq 0x110(%rsp), %rdx
movl $0x1f5, %esi            # imm = 0x1F5
movq %r15, %rcx
movq %rbx, %r8
callq 0x9ee0
movq 0x110(%rsp), %rdi
jmp 0x9615
leaq 0x20(%r15), %r14
leaq 0x7883(%rip), %rsi      # 0x10afa
movl $0x1, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x4590
cmpq $-0x1, %rax
je 0x9317
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 0x92d3
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 0x9324
callq 0x4310
jmp 0x9324
leaq 0x68(%rsp), %rdi
movq %r14, %rsi
callq 0x41e0
leaq 0x140(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x77c5(%rip), %rsi      # 0x10afc
leaq 0x77c8(%rip), %rdx      # 0x10b06
leaq 0x130(%rsp), %rdi
callq 0x6112
leaq 0x60(%r15), %rdi
leaq 0x130(%rsp), %rsi
callq 0xabe8
movq %rax, %r14
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x9379
callq 0x4310
leaq 0x68(%r15), %r13
cmpq %r13, %r14
movq %r14, %rdi
cmoveq %r15, %rdi
leaq 0x7784(%rip), %rax      # 0x10b12
leaq 0x7772(%rip), %rsi      # 0x10b07
cmoveq %rax, %rsi
addq $0x40, %rdi
callq 0x40c0
testl %eax, %eax
sete 0x158(%r12)
leaq 0x7767(%rip), %rsi      # 0x10b1b
leaq 0x68(%rsp), %rdi
callq 0x40c0
testl %eax, %eax
je 0x94d6
leaq 0x775c(%rip), %rsi      # 0x10b29
leaq 0x68(%rsp), %rdi
callq 0x40c0
testl %eax, %eax
jne 0x94f3
leaq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
movq %rax, (%rdi)
leaq 0x7737(%rip), %rsi      # 0x10b30
leaq 0x7739(%rip), %rdx      # 0x10b39
callq 0x6112
leaq 0x48(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x7725(%rip), %rcx      # 0x10b3a
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 0x7a92
leaq 0x76fe(%rip), %rsi      # 0x10b46
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 0x9473
callq 0x4310
leaq 0x76d6(%rip), %rsi      # 0x10b50
movq %rbx, %rdi
callq 0x45f0
leaq 0x76e6(%rip), %rsi      # 0x10b6f
leaq 0x28(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0xa858
leaq 0x76dc(%rip), %rsi      # 0x10b7e
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9918
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9920
leaq 0x68(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x7637(%rip), %rcx      # 0x10b1d
movl $0xb, %r8d
xorl %esi, %esi
callq 0x44b0
leaq 0x7b25(%rip), %rcx      # 0x1101f
leaq 0x68(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4390
movq 0x68(%rsp), %rdi
leaq 0x7694(%rip), %rsi      # 0x10bae
callq 0x43d0
testq %rax, %rax
je 0x95ce
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 0x95a7
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 0x9572
movq %r12, %rdi
callq 0x44c0
testl %eax, %eax
je 0x968d
leaq 0x48(%rsp), %rdi
leaq 0x130(%rsp), %rsi
callq 0x45f0
jmp 0x96d4
leaq 0x100(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x75d0(%rip), %rsi      # 0x10bb1
leaq 0x75d2(%rip), %rdx      # 0x10bba
leaq 0xf0(%rsp), %rdi
callq 0x6112
leaq 0xf0(%rsp), %rdx
movl $0x194, %esi            # imm = 0x194
movq %r15, %rcx
movq %rbx, %r8
callq 0x9ee0
movq 0xf0(%rsp), %rdi
cmpq %r14, %rdi
je 0x961f
callq 0x4310
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x9639
callq 0x4310
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x964d
callq 0x4310
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x9667
callq 0x4310
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x967b
callq 0x4310
addq $0x1138, %rsp           # imm = 0x1138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xe924(%rip), %r13      # 0x17fb8
leaq 0x7520(%rip), %rsi      # 0x10bbb
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 0xe8f1(%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 0x743a(%rip), %rsi      # 0x10b30
leaq 0x743c(%rip), %rdx      # 0x10b39
callq 0x6112
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%r15), %rsi
movq 0x48(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x7a92
leaq 0x741e(%rip), %rsi      # 0x10b46
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 0x9753
callq 0x4310
leaq 0x73f6(%rip), %rsi      # 0x10b50
movq %rbx, %rdi
callq 0x45f0
leaq 0x7406(%rip), %rsi      # 0x10b6f
leaq 0x28(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0xa858
leaq 0x73fc(%rip), %rsi      # 0x10b7e
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x97af
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x97b7
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 0x97f0
callq 0x4310
leaq 0x38(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x9803
callq 0x4310
cmpq 0xa8(%rsp), %r14
je 0x98ad
addq $0x40, %r14
leaq 0x7374(%rip), %rsi      # 0x10b90
leaq 0x28(%rsp), %rdi
movq %r14, %rdx
callq 0xa858
leaq 0x721c(%rip), %rsi      # 0x10a4c
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x985d
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9865
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 0x989e
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x98ad
callq 0x4310
movq 0x50(%rsp), %r14
movl $0x1, %esi
cmpq $0xa, %r14
jb 0x99d2
movl $0x4, %esi
movabsq $0x346dc5d63886594b, %rdi # imm = 0x346DC5D63886594B
movq %r14, %rcx
cmpq $0x63, %rcx
jbe 0x99cb
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x99d0
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x99d2
movq %rcx, %rax
mulq %rdi
shrq $0xb, %rdx
addl $0x4, %esi
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x98d3
addl $-0x3, %esi
jmp 0x99d2
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 0x995c
callq 0x4310
leaq 0x38(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x996f
callq 0x4310
cmpq %r15, %r14
je 0x9b6d
addq $0x40, %r14
leaq 0x720d(%rip), %rsi      # 0x10b90
leaq 0x28(%rsp), %rdi
movq %r14, %rdx
callq 0xa858
leaq 0x70b5(%rip), %rsi      # 0x10a4c
leaq 0x28(%rsp), %rdi
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9b1d
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9b25
addl $-0x2, %esi
jmp 0x99d2
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 0xa8d9
leaq 0x7190(%rip), %rcx      # 0x10b9d
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 0x9a42
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x9a4a
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 0x6fdf(%rip), %rsi      # 0x10a4c
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9a95
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9a9d
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 0x9ad6
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9ae5
callq 0x4310
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
je 0x9af7
callq 0x4310
leaq 0x6f4e(%rip), %rsi      # 0x10a4c
movq %rbx, %rdi
callq 0x45f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x40f0
jmp 0x9d12
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 0x9b5e
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9b6d
callq 0x4310
movq 0x50(%rsp), %r14
movl $0x1, %esi
cmpq $0xa, %r14
jb 0x9bcc
movl $0x4, %esi
movabsq $0x346dc5d63886594b, %rdi # imm = 0x346DC5D63886594B
movq %r14, %rcx
cmpq $0x63, %rcx
jbe 0x9bc5
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x9bca
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x9bcc
movq %rcx, %rax
mulq %rdi
shrq $0xb, %rdx
addl $0x4, %esi
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x9b8f
addl $-0x3, %esi
jmp 0x9bcc
addl $-0x2, %esi
jmp 0x9bcc
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 0xa8d9
leaq 0x6f96(%rip), %rcx      # 0x10b9d
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 0x9c3c
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x9c44
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 0x6de5(%rip), %rsi      # 0x10a4c
callq 0x45f0
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9c8f
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x9c97
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 0x9cd0
callq 0x4310
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9cdf
callq 0x4310
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
je 0x9cf1
callq 0x4310
leaq 0x6d54(%rip), %rsi      # 0x10a4c
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 0x961a
jmp 0x961f
jmp 0x9d82
jmp 0x9d96
jmp 0x9e57
jmp 0x9db6
jmp 0x9dca
jmp 0x9dde
jmp 0x9e57
jmp 0x9df2
jmp 0x9e06
jmp 0x9e57
jmp 0x9e1d
jmp 0x9e1d
jmp 0x9e57
jmp 0x9e78
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
jmp 0x9e44
jmp 0x9e78
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9d99
callq 0x4310
jmp 0x9d99
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
jne 0x9e2a
jmp 0x9e5a
jmp 0x9e57
jmp 0x9e78
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9dcd
callq 0x4310
jmp 0x9dcd
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x9de1
callq 0x4310
jmp 0x9de1
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
jne 0x9e2a
jmp 0x9e5a
jmp 0x9e57
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9e09
callq 0x4310
jmp 0x9e09
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x9e2a
jmp 0x9e5a
jmp 0x9e57
jmp 0x9e1d
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x9e5a
callq 0x4310
jmp 0x9e5a
jmp 0x9e57
jmp 0x9e78
jmp 0x9e78
jmp 0x9e78
movq %rax, %rbx
movq 0x110(%rsp), %rdi
cmpq %r14, %rdi
jne 0x9e6f
jmp 0x9e7b
jmp 0x9e78
jmp 0x9e57
jmp 0x9e57
jmp 0x9e78
jmp 0x9e78
jmp 0x9e78
movq %rax, %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x9e7b
callq 0x4310
jmp 0x9e7b
jmp 0x9e78
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0x9e95
callq 0x4310
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x9ea9
callq 0x4310
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x9ec3
callq 0x4310
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x9ed7
callq 0x4310
movq %rbx, %rdi
callq 0x45a0
nop