// File: UTAP[P]APHTTP/examples/handlers.cpp
// Function: UploadHandler::callback(Request*)
Response *UploadHandler::callback(Request *req) {
  string name = req->getBodyParam("file_name");
  string file = req->getBodyParam("file");
  cout << name << " (" << file.size() << "B):\n" << file << endl;
  Response *res = Response::redirect("/");
  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xf0(%rbp)
leaq -0x51(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x46c0
movq -0xe8(%rbp), %rdx
leaq 0x1806b(%rip), %rsi     # 0x21257
leaq -0x50(%rbp), %rdi
callq 0x4550
jmp 0x91f7
movq -0xf0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x105d0
jmp 0x920d
leaq -0x50(%rbp), %rdi
callq 0x4768
leaq -0x51(%rbp), %rdi
callq 0x4440
movq -0x10(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x46c0
movq -0xf8(%rbp), %rdx
leaq 0x18016(%rip), %rsi     # 0x21261
leaq -0xa8(%rbp), %rdi
callq 0x4550
jmp 0x9259
movq -0x100(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0xa8(%rbp), %rdx
callq 0x105d0
jmp 0x9275
leaq -0xa8(%rbp), %rdi
callq 0x4768
leaq -0xa9(%rbp), %rdi
callq 0x4440
movq 0x23d34(%rip), %rdi     # 0x2cfc8
leaq -0x30(%rbp), %rsi
callq 0x4370
movq %rax, -0x108(%rbp)
jmp 0x92a6
movq -0x108(%rbp), %rdi
leaq 0x17fb2(%rip), %rsi     # 0x21266
callq 0x43e0
movq %rax, -0x110(%rbp)
jmp 0x92c2
leaq -0x88(%rbp), %rdi
callq 0x4300
movq -0x110(%rbp), %rdi
movq %rax, %rsi
callq 0x4110
movq %rax, -0x118(%rbp)
jmp 0x92e6
movq -0x118(%rbp), %rdi
leaq 0x17f75(%rip), %rsi     # 0x21269
callq 0x43e0
movq %rax, -0x120(%rbp)
jmp 0x9302
movq -0x120(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x4370
movq %rax, -0x128(%rbp)
jmp 0x931e
movq -0x128(%rbp), %rdi
movq 0x23c7c(%rip), %rsi     # 0x2cfa8
callq 0x4430
jmp 0x9333
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x46c0
movq -0x130(%rbp), %rdx
leaq 0x17cc7(%rip), %rsi     # 0x2101b
leaq -0xd8(%rbp), %rdi
callq 0x4550
jmp 0x9362
leaq -0xd8(%rbp), %rdi
callq 0xced0
movq %rax, -0x138(%rbp)
jmp 0x9377
leaq -0xd8(%rbp), %rdi
callq 0x4768
leaq -0xd9(%rbp), %rdi
callq 0x4440
movq -0x138(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x4768
leaq -0x30(%rbp), %rdi
callq 0x4768
movq -0x140(%rbp), %rax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x93f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x4768
leaq -0x51(%rbp), %rdi
callq 0x4440
jmp 0x948a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x9427
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x4768
leaq -0xa9(%rbp), %rdi
callq 0x4440
jmp 0x9481
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x9475
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x9469
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x4768
leaq -0xd9(%rbp), %rdi
callq 0x4440
leaq -0x88(%rbp), %rdi
callq 0x4768
leaq -0x30(%rbp), %rdi
callq 0x4768
movq -0x60(%rbp), %rdi
callq 0x46b0
nopw %cs:(%rax,%rax)