// File: tylerkaraszewski[P]Argyle/HttpResponse.cpp
// Function: HttpResponse::HttpResponse(HttpRequest const&, Logger&, Config const&)
HttpResponse::HttpResponse(const HttpRequest& request, Logger& logger, const Config& config) :
m_request(request),
m_keepAlive(true),
m_reader(NULL),
m_config(config)
{
  if (request.getHttpError())
  {
    m_reader = new ErrorReader(request.getHttpError());
    m_keepAlive = false; // If we had an error while parsing this request, we reset the whole connection.
    return;
  }

  string redirectPath;
  time_t mtime = 0;
  m_path = FilenameResolver::resolve(unescapeUri(m_request.getPath()), m_config, redirectPath, &mtime);
  if (!redirectPath.empty())
  {
    m_reader = new ErrorReader(301, "", "Location: " + redirectPath + "\r\n");
    m_path = redirectPath;
  }
  else if (m_path.empty())
  {
    m_path = m_request.getPath();
    if (isGone(m_path))
    {
      m_reader = new ErrorReader(410);
    }
    else
    {
      m_reader = new ErrorReader(404);
    }
  }
  else if (!pathLooksSafe(m_path))
  {
    m_reader = new ErrorReader(400);
  }
  else if (pathIsCgiScript(m_path))
  {
    // @TODO: Add 'CgiReader' class.
    m_reader = new ErrorReader(501, "CGI Not Yet Implemented.");
  }
  else
  {
    m_reader = new FileReader(m_path, logger);
    int code = m_reader->getHttpResponseCode();
    if (code != 200)
    {
      delete m_reader;
      m_reader = new ErrorReader(code);
    }
  }
  int code = m_reader->getHttpResponseCode();
  m_keepAlive = m_reader->lengthKnown();
  m_headerBuffer = "HTTP/1.1 " + Utils::llToString(code) + " " + ErrorReader::getErrorMessage(code) + "\r\n";
  m_headerBuffer += S_STANDARD_HEADERS;
  if (mtime != 0)
  {
    m_headerBuffer += "Last-Modified: " + Utils::getHttpDate(mtime) + "\r\n";
  }
}

// Assembly:
subq $0x538, %rsp            # imm = 0x538
movq %rdi, 0x530(%rsp)
movq %rsi, 0x528(%rsp)
movq %rdx, 0x520(%rsp)
movq %rcx, 0x518(%rsp)
movq 0x530(%rsp), %rdi
movq %rdi, 0x120(%rsp)
movq 0x528(%rsp), %rax
movq %rax, (%rdi)
movb $0x1, 0x8(%rdi)
movq $0x0, 0x10(%rdi)
addq $0x18, %rdi
movq %rdi, 0x110(%rsp)
callq 0x4570
movq 0x120(%rsp), %rdi
addq $0x38, %rdi
movq %rdi, 0x118(%rsp)
callq 0x4570
movq 0x120(%rsp), %rax
movq 0x518(%rsp), %rcx
movq %rcx, 0x58(%rax)
movq 0x528(%rsp), %rdi
callq 0xb5d0
movl %eax, 0x12c(%rsp)
jmp 0xc5f2
movl 0x12c(%rsp), %eax
cmpl $0x0, %eax
je 0xc7e7
movl $0x40, %edi
callq 0x43b0
movq %rax, 0x108(%rsp)
jmp 0xc616
movb $0x1, 0x4be(%rsp)
movq 0x528(%rsp), %rdi
callq 0xb5d0
movl %eax, 0x104(%rsp)
jmp 0xc634
leaq 0x4e7(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x46c0
movq 0xf8(%rsp), %rdx
leaq 0x6ae8(%rip), %rsi      # 0x13140
leaq 0x4e8(%rsp), %rdi
callq 0x6450
jmp 0xc667
leaq 0x4bf(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x46c0
movq 0xf0(%rsp), %rdx
leaq 0x6ab5(%rip), %rsi      # 0x13140
leaq 0x4c0(%rsp), %rdi
callq 0x6450
jmp 0xc69a
movl 0x104(%rsp), %esi
movq 0x108(%rsp), %rdi
leaq 0x4e8(%rsp), %rdx
leaq 0x4c0(%rsp), %rcx
callq 0xf740
jmp 0xc6c0
movq 0x120(%rsp), %rax
movq 0x108(%rsp), %rcx
movb $0x0, 0x4be(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x4c0(%rsp), %rdi
callq 0x4788
leaq 0x4bf(%rsp), %rdi
callq 0x4400
leaq 0x4e8(%rsp), %rdi
callq 0x4788
leaq 0x4e7(%rsp), %rdi
callq 0x4400
movq 0x120(%rsp), %rax
movb $0x0, 0x8(%rax)
jmp 0xd740
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd755
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xc7c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xc7b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xc79d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x4c0(%rsp), %rdi
callq 0x4788
leaq 0x4bf(%rsp), %rdi
callq 0x4400
leaq 0x4e8(%rsp), %rdi
callq 0x4788
leaq 0x4e7(%rsp), %rdi
callq 0x4400
testb $0x1, 0x4be(%rsp)
jne 0xc7d0
jmp 0xc7e2
movq 0x108(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd755
leaq 0x498(%rsp), %rdi
callq 0x4570
movq 0x120(%rsp), %rax
movq $0x0, 0x490(%rsp)
movq (%rax), %rdi
callq 0xb5c0
movq %rax, 0xe8(%rsp)
jmp 0xc81a
movq 0xe8(%rsp), %rsi
leaq 0x450(%rsp), %rdi
callq 0xd780
jmp 0xc831
movq 0x120(%rsp), %rax
movq 0x58(%rax), %rdx
leaq 0x470(%rsp), %rdi
leaq 0x450(%rsp), %rsi
leaq 0x498(%rsp), %rcx
leaq 0x490(%rsp), %r8
callq 0xdee0
jmp 0xc864
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
leaq 0x470(%rsp), %rsi
callq 0x44d0
leaq 0x470(%rsp), %rdi
callq 0x4788
leaq 0x450(%rsp), %rdi
callq 0x4788
leaq 0x498(%rsp), %rdi
callq 0x4670
testb $0x1, %al
jne 0xcab7
movl $0x40, %edi
callq 0x43b0
movq %rax, 0xe0(%rsp)
jmp 0xc8c0
movb $0x1, 0x3e7(%rsp)
leaq 0x42f(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x46c0
movq 0xd8(%rsp), %rdx
leaq 0x6854(%rip), %rsi      # 0x13140
leaq 0x430(%rsp), %rdi
callq 0x6450
jmp 0xc8fb
leaq 0x697d(%rip), %rsi      # 0x1327f
leaq 0x3e8(%rsp), %rdi
leaq 0x498(%rsp), %rdx
callq 0xdcf0
jmp 0xc919
leaq 0x68f6(%rip), %rdx      # 0x13216
leaq 0x408(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
callq 0x61e0
jmp 0xc937
movq 0xe0(%rsp), %rdi
movl $0x12d, %esi            # imm = 0x12D
leaq 0x430(%rsp), %rdx
leaq 0x408(%rsp), %rcx
callq 0xf740
jmp 0xc95b
movq 0x120(%rsp), %rax
movq 0xe0(%rsp), %rcx
movb $0x0, 0x3e7(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x408(%rsp), %rdi
callq 0x4788
leaq 0x3e8(%rsp), %rdi
callq 0x4788
leaq 0x430(%rsp), %rdi
callq 0x4788
leaq 0x42f(%rsp), %rdi
callq 0x4400
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
leaq 0x498(%rsp), %rsi
callq 0x4050
jmp 0xc9c6
jmp 0xd3f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd748
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x450(%rsp), %rdi
callq 0x4788
jmp 0xd748
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xca87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xca7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xca6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x408(%rsp), %rdi
callq 0x4788
leaq 0x3e8(%rsp), %rdi
callq 0x4788
leaq 0x430(%rsp), %rdi
callq 0x4788
leaq 0x42f(%rsp), %rdi
callq 0x4400
testb $0x1, 0x3e7(%rsp)
jne 0xcaa0
jmp 0xcab2
movq 0xe0(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd748
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
callq 0x4670
testb $0x1, %al
jne 0xcad1
jmp 0xce59
movq 0x120(%rsp), %rax
movq (%rax), %rdi
callq 0xb5c0
movq %rax, 0xd0(%rsp)
jmp 0xcaeb
movq 0xd0(%rsp), %rsi
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
callq 0x4050
jmp 0xcb06
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
callq 0xd950
movb %al, 0xcf(%rsp)
jmp 0xcb20
movb 0xcf(%rsp), %al
testb $0x1, %al
jne 0xcb30
jmp 0xccc2
movl $0x40, %edi
callq 0x43b0
movq %rax, 0xc0(%rsp)
jmp 0xcb44
movb $0x1, 0x396(%rsp)
leaq 0x3bf(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x46c0
movq 0xb8(%rsp), %rdx
leaq 0x65d0(%rip), %rsi      # 0x13140
leaq 0x3c0(%rsp), %rdi
callq 0x6450
jmp 0xcb7f
leaq 0x397(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x46c0
movq 0xb0(%rsp), %rdx
leaq 0x659d(%rip), %rsi      # 0x13140
leaq 0x398(%rsp), %rdi
callq 0x6450
jmp 0xcbb2
movq 0xc0(%rsp), %rdi
movl $0x19a, %esi            # imm = 0x19A
leaq 0x3c0(%rsp), %rdx
leaq 0x398(%rsp), %rcx
callq 0xf740
jmp 0xcbd6
movq 0x120(%rsp), %rax
movq 0xc0(%rsp), %rcx
movb $0x0, 0x396(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x398(%rsp), %rdi
callq 0x4788
leaq 0x397(%rsp), %rdi
callq 0x4400
leaq 0x3c0(%rsp), %rdi
callq 0x4788
leaq 0x3bf(%rsp), %rdi
callq 0x4400
jmp 0xce54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xcc92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xcc78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x398(%rsp), %rdi
callq 0x4788
leaq 0x397(%rsp), %rdi
callq 0x4400
leaq 0x3c0(%rsp), %rdi
callq 0x4788
leaq 0x3bf(%rsp), %rdi
callq 0x4400
testb $0x1, 0x396(%rsp)
jne 0xccab
jmp 0xccbd
movq 0xc0(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd748
movl $0x40, %edi
callq 0x43b0
movq %rax, 0xa8(%rsp)
jmp 0xccd6
movb $0x1, 0x346(%rsp)
leaq 0x36f(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x46c0
movq 0xa0(%rsp), %rdx
leaq 0x643e(%rip), %rsi      # 0x13140
leaq 0x370(%rsp), %rdi
callq 0x6450
jmp 0xcd11
leaq 0x347(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x46c0
movq 0x98(%rsp), %rdx
leaq 0x640b(%rip), %rsi      # 0x13140
leaq 0x348(%rsp), %rdi
callq 0x6450
jmp 0xcd44
movq 0xa8(%rsp), %rdi
movl $0x194, %esi            # imm = 0x194
leaq 0x370(%rsp), %rdx
leaq 0x348(%rsp), %rcx
callq 0xf740
jmp 0xcd68
movq 0x120(%rsp), %rax
movq 0xa8(%rsp), %rcx
movb $0x0, 0x346(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x348(%rsp), %rdi
callq 0x4788
leaq 0x347(%rsp), %rdi
callq 0x4400
leaq 0x370(%rsp), %rdi
callq 0x4788
leaq 0x36f(%rsp), %rdi
callq 0x4400
jmp 0xce54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xce24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xce0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x4788
leaq 0x347(%rsp), %rdi
callq 0x4400
leaq 0x370(%rsp), %rdi
callq 0x4788
leaq 0x36f(%rsp), %rdi
callq 0x4400
testb $0x1, 0x346(%rsp)
jne 0xce3d
jmp 0xce4f
movq 0xa8(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd748
jmp 0xd3f3
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
callq 0xd9c0
movb %al, 0x97(%rsp)
jmp 0xce73
movb 0x97(%rsp), %al
testb $0x1, %al
jne 0xd010
jmp 0xce84
movl $0x40, %edi
callq 0x43b0
movq %rax, 0x88(%rsp)
jmp 0xce98
movb $0x1, 0x2f6(%rsp)
leaq 0x31f(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x46c0
movq 0x80(%rsp), %rdx
leaq 0x627c(%rip), %rsi      # 0x13140
leaq 0x320(%rsp), %rdi
callq 0x6450
jmp 0xced3
leaq 0x2f7(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x46c0
movq 0x78(%rsp), %rdx
leaq 0x624f(%rip), %rsi      # 0x13140
leaq 0x2f8(%rsp), %rdi
callq 0x6450
jmp 0xcf00
movq 0x88(%rsp), %rdi
movl $0x190, %esi            # imm = 0x190
leaq 0x320(%rsp), %rdx
leaq 0x2f8(%rsp), %rcx
callq 0xf740
jmp 0xcf24
movq 0x120(%rsp), %rax
movq 0x88(%rsp), %rcx
movb $0x0, 0x2f6(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x2f8(%rsp), %rdi
callq 0x4788
leaq 0x2f7(%rsp), %rdi
callq 0x4400
leaq 0x320(%rsp), %rdi
callq 0x4788
leaq 0x31f(%rsp), %rdi
callq 0x4400
jmp 0xd3f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xcfe0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xcfc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x2f8(%rsp), %rdi
callq 0x4788
leaq 0x2f7(%rsp), %rdi
callq 0x4400
leaq 0x320(%rsp), %rdi
callq 0x4788
leaq 0x31f(%rsp), %rdi
callq 0x4400
testb $0x1, 0x2f6(%rsp)
jne 0xcff9
jmp 0xd00b
movq 0x88(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd748
movq 0x120(%rsp), %rdi
addq $0x18, %rdi
callq 0xdab0
movb %al, 0x77(%rsp)
jmp 0xd027
movb 0x77(%rsp), %al
testb $0x1, %al
jne 0xd034
jmp 0xd1ae
movl $0x40, %edi
callq 0x43b0
movq %rax, 0x68(%rsp)
jmp 0xd045
movb $0x1, 0x2a6(%rsp)
leaq 0x2cf(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x46c0
movq 0x60(%rsp), %rdx
leaq 0x621f(%rip), %rsi      # 0x1328a
leaq 0x2d0(%rsp), %rdi
callq 0x6450
jmp 0xd07a
leaq 0x2a7(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x46c0
movq 0x58(%rsp), %rdx
leaq 0x60a8(%rip), %rsi      # 0x13140
leaq 0x2a8(%rsp), %rdi
callq 0x6450
jmp 0xd0a7
movq 0x68(%rsp), %rdi
movl $0x1f5, %esi            # imm = 0x1F5
leaq 0x2d0(%rsp), %rdx
leaq 0x2a8(%rsp), %rcx
callq 0xf740
jmp 0xd0c8
movq 0x120(%rsp), %rax
movq 0x68(%rsp), %rcx
movb $0x0, 0x2a6(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x2a8(%rsp), %rdi
callq 0x4788
leaq 0x2a7(%rsp), %rdi
callq 0x4400
leaq 0x2d0(%rsp), %rdi
callq 0x4788
leaq 0x2cf(%rsp), %rdi
callq 0x4400
jmp 0xd3ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd181
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd167
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x4788
leaq 0x2a7(%rsp), %rdi
callq 0x4400
leaq 0x2d0(%rsp), %rdi
callq 0x4788
leaq 0x2cf(%rsp), %rdi
callq 0x4400
testb $0x1, 0x2a6(%rsp)
jne 0xd19a
jmp 0xd1a9
movq 0x68(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd748
movl $0x78, %edi
callq 0x43b0
movq %rax, 0x50(%rsp)
jmp 0xd1bf
movq 0x50(%rsp), %rdi
movq 0x120(%rsp), %rsi
addq $0x18, %rsi
movq 0x520(%rsp), %rdx
callq 0xec50
jmp 0xd1df
movq 0x120(%rsp), %rax
movq 0x50(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rax), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, 0x4c(%rsp)
jmp 0xd203
movl 0x4c(%rsp), %eax
movl %eax, 0x2a0(%rsp)
cmpl $0xc8, 0x2a0(%rsp)
je 0xd3ed
movq 0x120(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, %rax
je 0xd241
movq 0x40(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x40, %edi
callq 0x43b0
movq %rax, 0x38(%rsp)
jmp 0xd252
movb $0x1, 0x256(%rsp)
movl 0x2a0(%rsp), %eax
movl %eax, 0x2c(%rsp)
leaq 0x27f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x46c0
movq 0x30(%rsp), %rdx
leaq 0x5ebd(%rip), %rsi      # 0x13140
leaq 0x280(%rsp), %rdi
callq 0x6450
jmp 0xd292
leaq 0x257(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x46c0
movq 0x20(%rsp), %rdx
leaq 0x5e90(%rip), %rsi      # 0x13140
leaq 0x258(%rsp), %rdi
callq 0x6450
jmp 0xd2bf
movl 0x2c(%rsp), %esi
movq 0x38(%rsp), %rdi
leaq 0x280(%rsp), %rdx
leaq 0x258(%rsp), %rcx
callq 0xf740
jmp 0xd2df
movq 0x120(%rsp), %rax
movq 0x38(%rsp), %rcx
movb $0x0, 0x256(%rsp)
movq %rcx, 0x10(%rax)
leaq 0x258(%rsp), %rdi
callq 0x4788
leaq 0x257(%rsp), %rdi
callq 0x4400
leaq 0x280(%rsp), %rdi
callq 0x4788
leaq 0x27f(%rsp), %rdi
callq 0x4400
jmp 0xd3ed
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
movl $0x78, %esi
callq 0x43c0
jmp 0xd748
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd3c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd3a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x258(%rsp), %rdi
callq 0x4788
leaq 0x257(%rsp), %rdi
callq 0x4400
leaq 0x280(%rsp), %rdi
callq 0x4788
leaq 0x27f(%rsp), %rdi
callq 0x4400
testb $0x1, 0x256(%rsp)
jne 0xd3d9
jmp 0xd3e8
movq 0x38(%rsp), %rdi
movl $0x40, %esi
callq 0x43c0
jmp 0xd748
jmp 0xd3ef
jmp 0xd3f1
jmp 0xd3f3
jmp 0xd3f5
movq 0x120(%rsp), %rax
movq 0x10(%rax), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, 0x1c(%rsp)
jmp 0xd410
movq 0x120(%rsp), %rax
movl 0x1c(%rsp), %ecx
movl %ecx, 0x250(%rsp)
movq 0x10(%rax), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movb %al, 0x1b(%rsp)
jmp 0xd436
movq 0x120(%rsp), %rax
movb 0x1b(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x8(%rax)
movslq 0x250(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
callq 0x10f70
jmp 0xd45f
leaq 0x5e3d(%rip), %rsi      # 0x132a3
leaq 0x1d0(%rsp), %rdi
leaq 0x1b0(%rsp), %rdx
callq 0x6230
jmp 0xd47d
leaq 0x672b(%rip), %rdx      # 0x13baf
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x61e0
jmp 0xd49b
movl 0x250(%rsp), %esi
leaq 0x190(%rsp), %rdi
callq 0xfab0
jmp 0xd4b1
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
leaq 0x190(%rsp), %rdx
callq 0x97b0
jmp 0xd4d0
leaq 0x5d3f(%rip), %rdx      # 0x13216
leaq 0x230(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x61e0
jmp 0xd4ee
movq 0x120(%rsp), %rdi
addq $0x38, %rdi
movq %rdi, 0x10(%rsp)
leaq 0x230(%rsp), %rsi
movq %rsi, 0x8(%rsp)
callq 0x44d0
movq 0x8(%rsp), %rdi
callq 0x4788
leaq 0x210(%rsp), %rdi
callq 0x4788
leaq 0x190(%rsp), %rdi
callq 0x4788
leaq 0x1f0(%rsp), %rdi
callq 0x4788
leaq 0x1d0(%rsp), %rdi
callq 0x4788
leaq 0x1b0(%rsp), %rdi
callq 0x4788
movq 0x10(%rsp), %rdi
leaq 0xbf10(%rip), %rsi      # 0x19478
callq 0x44f0
jmp 0xd56f
cmpq $0x0, 0x490(%rsp)
je 0xd733
movq 0x490(%rsp), %rsi
leaq 0x130(%rsp), %rdi
callq 0x112d0
jmp 0xd595
leaq 0x5d11(%rip), %rsi      # 0x132ad
leaq 0x150(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0x6230
jmp 0xd5b3
leaq 0x5c5c(%rip), %rdx      # 0x13216
leaq 0x170(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x61e0
jmp 0xd5d1
movq 0x120(%rsp), %rdi
addq $0x38, %rdi
leaq 0x170(%rsp), %rsi
callq 0x44f0
jmp 0xd5ec
leaq 0x170(%rsp), %rdi
callq 0x4788
leaq 0x150(%rsp), %rdi
callq 0x4788
leaq 0x130(%rsp), %rdi
callq 0x4788
jmp 0xd733
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd6bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd6ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd6a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd694
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x210(%rsp), %rdi
callq 0x4788
leaq 0x190(%rsp), %rdi
callq 0x4788
leaq 0x1f0(%rsp), %rdi
callq 0x4788
leaq 0x1d0(%rsp), %rdi
callq 0x4788
leaq 0x1b0(%rsp), %rdi
callq 0x4788
jmp 0xd748
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd724
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
jmp 0xd717
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x510(%rsp)
movl %eax, 0x50c(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x4788
leaq 0x150(%rsp), %rdi
callq 0x4788
leaq 0x130(%rsp), %rdi
callq 0x4788
jmp 0xd748
leaq 0x498(%rsp), %rdi
callq 0x4788
addq $0x538, %rsp            # imm = 0x538
retq
leaq 0x498(%rsp), %rdi
callq 0x4788
movq 0x118(%rsp), %rdi
callq 0x4788
movq 0x110(%rsp), %rdi
callq 0x4788
movq 0x510(%rsp), %rdi
callq 0x46b0
nopl (%rax)