// File: /workspace/github_cpp_makefile_star2_O2/nilnilnil[P]autocomplete/src/main.cpp
// Function: callback(mg_event, mg_connection*, mg_request_info const*)
static void*
callback(enum mg_event event,
         struct mg_connection *conn,
         const struct mg_request_info *request_info) {
    if (event == MG_NEW_REQUEST) {
        std::string request_uri = request_info->uri;
        if (request_uri == "/face/suggest/") {
            return handle_suggest(event, conn, request_info);
        }
        else if (request_uri == "/face/import/") {
            return handle_import(event, conn, request_info);
        }
        else if (request_uri == "/face/export/") {
            return handle_export(event, conn, request_info);
        }
        else if (request_uri == "/face/stats/") {
            return handle_stats(event, conn, request_info);
        }
        else {
            return handle_invalid_request(event, conn, request_info);
        }
    }
    else {
        return NULL;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
testl %edi, %edi
je 0x8bb8
xorl %eax, %eax
jmp 0x915d
movq %rdx, %r14
movq %rsi, %r13
movq 0x10(%rdx), %rsi
leaq 0xe8(%rsp), %r15
leaq 0x108(%rsp), %rdx
movq %r15, %rdi
callq 0x97ec
leaq 0x988c(%rip), %rsi      # 0x1246d
movq %r15, %rdi
callq 0x9b38
testb %al, %al
je 0x8c21
incq 0x11ddc(%rip)           # 0x1a9d0
cmpb $0x1, 0x11dcd(%rip)     # 0x1a9c8
jne 0x8d9e
leaq 0x989d(%rip), %rdx      # 0x124a5
leaq 0x989b(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0x19c, %esi            # imm = 0x19C
callq 0x77fe
jmp 0x9149
leaq 0x9854(%rip), %rsi      # 0x1247c
leaq 0xe8(%rsp), %rdi
callq 0x9b38
testb %al, %al
je 0x8f5e
leaq 0x9e29(%rip), %rsi      # 0x12a6d
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x97ec
leaq 0x108(%rsp), %rdi
movq %rsp, %rdx
movq %r14, %rsi
callq 0x7700
movq %rsp, %rdi
callq 0x5210
leaq 0x968d(%rip), %rsi      # 0x12300
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x97ec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
movq %r14, %rsi
callq 0x7700
movq %rsp, %r15
movq (%r15), %rdi
callq 0x5810
movl %eax, %ebp
movq %r15, %rdi
callq 0x5210
leaq 0x20(%rsp), %rdi
callq 0x5210
leaq 0x981f(%rip), %rsi      # 0x124d7
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x97ec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
movq %r14, %rsi
callq 0x7700
movq %rsp, %r14
movq (%r14), %rdi
callq 0x5810
movl %eax, %r15d
movq %r14, %rdi
callq 0x5210
leaq 0x20(%rsp), %rdi
callq 0x5210
xorl %r12d, %r12d
xorl %edi, %edi
callq 0x5420
movq %rax, %r14
movq %rsp, %rdi
leaq 0x108(%rsp), %rsi
callq 0x5690
cmpl $0x1, %r15d
sbbl %r12d, %r12d
orl %r15d, %r12d
movq %rsp, %rdi
leaq 0x20(%rsp), %rcx
leaq 0x40(%rsp), %r8
movl %ebp, %esi
movl %r12d, %edx
callq 0x85b2
movl %eax, %ebp
movq %rsp, %rdi
callq 0x5210
testl %ebp, %ebp
js 0x9092
leaq 0x977d(%rip), %rdx      # 0x124cb
leaq 0x9755(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0xc8, %esi
callq 0x77fe
movl 0x20(%rsp), %ebp
movl 0x40(%rsp), %r15d
movq 0x108(%rsp), %r12
xorl %edi, %edi
callq 0x5420
subq %r14, %rax
leaq 0x9608(%rip), %rsi      # 0x1238c
movq %r13, %rdi
movl %ebp, %edx
movl %r15d, %ecx
movq %r12, %r8
movq %rax, %r9
xorl %eax, %eax
callq 0xbb9c
jmp 0x913c
leaq 0x971f(%rip), %rsi      # 0x124c4
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x97ec
leaq 0x108(%rsp), %rdi
movq %rsp, %rdx
movq %r14, %rsi
callq 0x7700
movq %rsp, %rdi
callq 0x5210
leaq 0xa1f3(%rip), %rsi      # 0x12fc7
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x97ec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
movq %r14, %rsi
callq 0x7700
leaq 0x20(%rsp), %rdi
callq 0x5210
leaq 0x9e1f(%rip), %rsi      # 0x12c23
leaq 0x40(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x97ec
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rdx
movq %r14, %rsi
callq 0x7700
leaq 0x40(%rsp), %rdi
callq 0x5210
leaq 0x968d(%rip), %rsi      # 0x124c6
leaq 0x80(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x97ec
leaq 0x40(%rsp), %rdi
leaq 0x80(%rsp), %rdx
movq %r14, %rsi
callq 0x7700
leaq 0x80(%rsp), %rdi
callq 0x5210
pushq $0x20
popq %rbp
cmpq $0x0, 0x8(%rsp)
movl %ebp, %eax
je 0x8e83
movq (%rsp), %rdi
callq 0x5810
cmpl $0x20, %eax
cmovbl %eax, %ebp
movq 0x28(%rsp), %rbx
leaq 0x9636(%rip), %rdx      # 0x124cb
leaq 0x960e(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0xc8, %esi
callq 0x77fe
leaq 0x108(%rsp), %rdi
callq 0x9cd9
leaq 0x80(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x5690
leaq 0x11aae(%rip), %rsi     # 0x1a980
leaq 0x11abf(%rip), %rdx     # 0x1a998
leaq 0xd0(%rsp), %rdi
leaq 0x80(%rsp), %rcx
movl %ebp, %r8d
callq 0x66d3
leaq 0x80(%rsp), %rdi
callq 0x5210
testq %rbx, %rbx
je 0x90b2
movq 0x20(%rsp), %r14
leaq 0xb0(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x5690
leaq 0x60(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
leaq 0x40(%rsp), %rcx
callq 0x7e20
movq 0x60(%rsp), %rcx
leaq 0x9582(%rip), %rsi      # 0x124ce
movq %r13, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0xbb9c
jmp 0x90fc
leaq 0x9525(%rip), %rsi      # 0x1248a
leaq 0xe8(%rsp), %rdi
callq 0x9b38
testb %al, %al
je 0x8fed
leaq 0x9af0(%rip), %rsi      # 0x12a6d
leaq 0x108(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x97ec
movq %rsp, %rdi
leaq 0x108(%rsp), %rdx
movq %r14, %rsi
callq 0x7700
leaq 0x108(%rsp), %rdi
callq 0x5210
cmpb $0x1, 0x11a12(%rip)     # 0x1a9c8
jne 0x919d
leaq 0x94e2(%rip), %rdx      # 0x124a5
leaq 0x94e0(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0x19c, %esi            # imm = 0x19C
callq 0x77fe
leaq 0x9509(%rip), %rsi      # 0x124e7
movq %r13, %rdi
xorl %eax, %eax
callq 0xbb9c
jmp 0x92c4
leaq 0x94a4(%rip), %rsi      # 0x12498
leaq 0xe8(%rsp), %rdi
callq 0x9b38
testb %al, %al
je 0x916f
leaq 0x94bb(%rip), %rdx      # 0x124cb
leaq 0x9493(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0xc8, %esi
callq 0x77fe
movq 0x119a5(%rip), %rdx     # 0x1a9d0
leaq 0x94fe(%rip), %rsi      # 0x12530
movq %r13, %rdi
xorl %eax, %eax
callq 0xbb9c
leaq 0x108(%rsp), %rdi
callq 0x8581
movq 0x108(%rsp), %rdx
leaq 0x94ed(%rip), %rsi      # 0x12545
movq %r13, %rdi
xorl %eax, %eax
callq 0xbb9c
leaq 0x108(%rsp), %rdi
callq 0x5210
cmpb $0x1, 0x11952(%rip)     # 0x1a9c8
jne 0x92cc
leaq 0x94ce(%rip), %rsi      # 0x12551
movq %r13, %rdi
xorl %eax, %eax
callq 0xbb9c
jmp 0x92f6
leaq 0x9444(%rip), %rdx      # 0x124dd
leaq 0x940a(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0x194, %esi            # imm = 0x194
callq 0x77fe
jmp 0x913c
leaq 0xb0(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x5690
leaq 0x60(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
leaq 0x40(%rsp), %rcx
callq 0x7e20
movq 0x60(%rsp), %rdx
leaq 0x945b(%rip), %rsi      # 0x1254d
movq %r13, %rdi
xorl %eax, %eax
callq 0xbb9c
leaq 0x60(%rsp), %rdi
callq 0x5210
leaq 0xb0(%rsp), %rdi
callq 0x5210
leaq 0xd0(%rsp), %rdi
callq 0x989c
leaq 0x40(%rsp), %rdi
callq 0x5210
leaq 0x20(%rsp), %rdi
callq 0x5210
movq %rsp, %rdi
callq 0x5210
leaq 0x108(%rsp), %rdi
callq 0x5210
leaq 0xe8(%rsp), %rdi
callq 0x5210
leaq 0xa0e2(%rip), %rax      # 0x1323f
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9367(%rip), %rdx      # 0x124dd
leaq 0x932d(%rip), %rcx      # 0x124aa
movq %r13, %rdi
movl $0x194, %esi            # imm = 0x194
callq 0x77fe
leaq 0x9407(%rip), %rsi      # 0x12598
movq %r13, %rdi
xorl %eax, %eax
callq 0xbb9c
jmp 0x9149
movq %r13, 0xa8(%rsp)
movb $0x1, 0x1181c(%rip)     # 0x1a9c8
movq (%rsp), %rsi
leaq 0x108(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x5500
xorl %ebx, %ebx
xorl %edi, %edi
callq 0x5420
movq %rax, 0xa0(%rsp)
pushq $0x28
popq %r15
pushq $0x9
popq %rbp
leaq 0x20(%rsp), %r12
pushq $0xa
popq %r13
movq 0x117a0(%rip), %rax     # 0x1a988
movq 0x11791(%rip), %rcx     # 0x1a980
subq %rcx, %rax
cqto
pushq $0x38
popq %rsi
idivq %rsi
cmpq %rax, %rbx
jae 0x927b
movl -0x28(%rcx,%r15), %esi
leaq 0x108(%rsp), %rdi
callq 0x52f0
movq %rax, %rdi
movl %ebp, %esi
callq 0x5570
movq 0x1175e(%rip), %rcx     # 0x1a980
leaq (%rcx,%r15), %rsi
addq $-0x20, %rsi
movq %rax, %rdi
callq 0x53f0
movq %rax, %rdi
movl %ebp, %esi
callq 0x5570
movq %rax, %r14
movq 0x1173a(%rip), %rsi     # 0x1a980
addq %r15, %rsi
movq %r12, %rdi
callq 0x9932
movq %r14, %rdi
movq %r12, %rsi
callq 0x53f0
movq %rax, %rdi
movl %r13d, %esi
callq 0x5570
movq %r12, %rdi
callq 0x5210
incq %rbx
addq $0x38, %r15
jmp 0x91e1
movq %rax, %r14
movb $0x0, 0x11743(%rip)     # 0x1a9c8
movq (%rsp), %r15
xorl %edi, %edi
callq 0x5420
subq 0xa0(%rsp), %rax
leaq 0x924e(%rip), %rsi      # 0x124ed
movq 0xa8(%rsp), %rdi
movq %r14, %rdx
movq %r15, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0xbb9c
leaq 0x108(%rsp), %rdi
callq 0x5770
movq %rsp, %rdi
jmp 0x9144
movq 0x116b5(%rip), %rax     # 0x1a988
subq 0x116a6(%rip), %rax     # 0x1a980
pushq $0x38
popq %rcx
cqto
idivq %rcx
leaq 0x927c(%rip), %rsi      # 0x12565
movq %r13, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0xbb9c
callq 0x5740
movl %eax, %edi
callq 0x7783
movl $0x400, %ecx            # imm = 0x400
cltd
idivl %ecx
leaq 0x9271(%rip), %rsi      # 0x12582
movq %r13, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0xbb9c
jmp 0x9149
jmp 0x9413
jmp 0x93f0
jmp 0x93c6
jmp 0x9346
jmp 0x9355
jmp 0x9367
jmp 0x93c6
jmp 0x93f0
jmp 0x93fd
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x5210
jmp 0x9358
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x5210
jmp 0x936a
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x989c
jmp 0x93d2
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x5210
jmp 0x93d2
jmp 0x93cf
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
jmp 0x93d7
jmp 0x93ad
movq %rax, %rbx
jmp 0x93dc
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
jmp 0x93e1
jmp 0x93b6
movq %rax, %rbx
jmp 0x93e6
jmp 0x93f0
jmp 0x93b6
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
jmp 0x93e9
jmp 0x93f0
jmp 0x93f0
jmp 0x93c6
movq %rax, %rbx
jmp 0x9423
jmp 0x93fd
jmp 0x93fd
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x5210
leaq 0x20(%rsp), %rdi
callq 0x5210
movq %rsp, %rdi
callq 0x5210
jmp 0x93f3
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
jmp 0x9426
movq %rax, %rbx
jmp 0x942b
jmp 0x9413
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5210
jmp 0x9416
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x5770
movq %rsp, %rdi
callq 0x5210
leaq 0xe8(%rsp), %rdi
callq 0x5210
movq %rbx, %rdi
callq 0x58e0