// File: 64Mega[P]todo-cli/src/todo.cpp
// Function: process_todos(std::queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>*, bool)
void process_todos(std::queue<std::string>* command_list, bool local_mode) {
    static bool local = local_mode;

    // Recursion guard
    if(command_list->empty()) { 
        return; 
    }
    
    std::string command = command_list->front();
    std::transform(command.begin(), command.end(), command.begin(), ::tolower);    
    command_list->pop();

    // Pretty straightforward state-changes where necessary. Some of the functions "eat" the remainder
    // of the command inputs (if any) to make sure there aren't multiple triggerings of, for instance,
    // the usage() function.
    if(match_one_or_more(command, "global")) {
        local = false;        
        if(command_list->empty()) {
            read_todos(local);
        }
    } else
    if(match_one_or_more(command, "init")) {
        todo_init(local);
    } else 
    if(match_one_or_more(command, "add")) {
        if(command_list->empty()) {
            ccout << "No todo body provided." << std::endl;
        } else {
            write_todo(concat_remainder(command_list), local);
        }
    } else
    if(match_one_or_more(command, "complete")) {
        if(command_list->empty()) {
            ccout << "No todo ID provided." << std::endl;
        } else {
            unsigned int idx = atoi(command_list->front().c_str());
            command_list->pop();
            complete_todo(idx, local);
        }
    } else
    if(match_one_or_more(command, "sweep")) {
        sweep_todos(local);
    } else
    if(match_one_or_more(command, "delete")) {
        if(command_list->empty()) {
            ccout << "No todo ID provided." << std::endl;          
        } else {
            unsigned int idx = atoi(command_list->front().c_str());
            command_list->pop();
            delete_todo(idx, local);
        }
    } else 
    if(match_one_or_more(command, "purge")) {
        purge_todos(local);
    } else
    if(match_one_or_more(command, "version")) {
        ccout << "todo-cli version " << VERSION << std::endl;       
        while(!command_list->empty()) { command_list->pop(); }
    } else
    if(match_one_or_more(command, "help")) {
        while(!command_list->empty()) { command_list->pop(); }
        usage();
    } else {
        while(!command_list->empty()) { command_list->pop(); }
        // usage();
        ccout << "Invalid command. Run 'todo help' for usage information" << std::endl;
    }
    
    process_todos(command_list);    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3f0, %rsp            # imm = 0x3F0
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
cmpb $0x0, 0xe3f52(%rip)     # 0xf9530
jne 0x15608
leaq 0xe3f49(%rip), %rdi     # 0xf9530
callq 0x1ac50
cmpl $0x0, %eax
je 0x15608
movb -0x9(%rbp), %al
andb $0x1, %al
movb %al, 0xe3f2d(%rip)      # 0xf9529
leaq 0xe3f2d(%rip), %rdi     # 0xf9530
callq 0x1ad60
movq -0x8(%rbp), %rdi
callq 0x171f0
testb $0x1, %al
jne 0x15617
jmp 0x1561c
jmp 0x161b3
movq -0x8(%rbp), %rdi
callq 0x174a0
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x8bfb0
movq -0x318(%rbp), %rdi
callq 0x89950
movq -0x318(%rbp), %rdi
movq %rax, -0x38(%rbp)
callq 0x89970
movq -0x318(%rbp), %rdi
movq %rax, -0x40(%rbp)
callq 0x89950
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0xe373d(%rip), %rcx     # 0xf8db8
callq 0x175d0
movq %rax, -0x310(%rbp)
jmp 0x15689
movq -0x310(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
callq 0x174c0
jmp 0x1569f
leaq -0x80(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x156ae
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x1b280
movq -0x320(%rbp), %rdx
leaq 0xa7c76(%rip), %rsi     # 0xbd345
leaq -0xa0(%rbp), %rdi
callq 0x17290
jmp 0x156dd
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x16340
movb %al, -0x321(%rbp)
jmp 0x156f5
leaq -0xa0(%rbp), %rdi
callq 0x89820
leaq -0xa1(%rbp), %rdi
callq 0x1b2a0
leaq -0x80(%rbp), %rdi
callq 0x89820
movb -0x321(%rbp), %al
testb $0x1, %al
jne 0x15725
jmp 0x157b2
movb $0x0, 0xe3dfd(%rip)     # 0xf9529
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x322(%rbp)
jmp 0x1573d
movb -0x322(%rbp), %al
testb $0x1, %al
jne 0x15749
jmp 0x157ad
movzbl 0xe3dd9(%rip), %edi     # 0xf9529
andl $0x1, %edi
callq 0x15290
jmp 0x1575a
jmp 0x157ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x161bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x15793
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x89820
leaq -0xa1(%rbp), %rdi
callq 0x1b2a0
leaq -0x80(%rbp), %rdi
callq 0x89820
jmp 0x161bc
jmp 0x1619d
leaq -0xc8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x157c4
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x1b280
movq -0x330(%rbp), %rdx
leaq 0xa7b67(%rip), %rsi     # 0xbd34c
leaq -0xe8(%rbp), %rdi
callq 0x17290
jmp 0x157f3
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x16340
movb %al, -0x331(%rbp)
jmp 0x1580e
leaq -0xe8(%rbp), %rdi
callq 0x89820
leaq -0xe9(%rbp), %rdi
callq 0x1b2a0
leaq -0xc8(%rbp), %rdi
callq 0x89820
movb -0x331(%rbp), %al
testb $0x1, %al
jne 0x1583e
jmp 0x15897
movzbl 0xe3ce4(%rip), %edi     # 0xf9529
andl $0x1, %edi
callq 0x16450
jmp 0x1584f
jmp 0x1619b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1587a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x89820
leaq -0xe9(%rbp), %rdi
callq 0x1b2a0
leaq -0xc8(%rbp), %rdi
callq 0x89820
jmp 0x161bc
leaq -0x110(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x158a9
leaq -0x131(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x1b280
movq -0x340(%rbp), %rdx
leaq 0xa7a87(%rip), %rsi     # 0xbd351
leaq -0x130(%rbp), %rdi
callq 0x17290
jmp 0x158d8
leaq -0x110(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x16340
movb %al, -0x341(%rbp)
jmp 0x158f3
leaq -0x130(%rbp), %rdi
callq 0x89820
leaq -0x131(%rbp), %rdi
callq 0x1b2a0
leaq -0x110(%rbp), %rdi
callq 0x89820
movb -0x341(%rbp), %al
testb $0x1, %al
jne 0x15926
jmp 0x15a16
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x342(%rbp)
jmp 0x15937
movb -0x342(%rbp), %al
testb $0x1, %al
jne 0x15943
jmp 0x159bc
leaq 0xe4af6(%rip), %rdi     # 0xfa440
leaq 0xa7a04(%rip), %rsi     # 0xbd355
callq 0x83450
movq %rax, -0x350(%rbp)
jmp 0x1595f
movq -0x350(%rbp), %rdi
leaq 0x6d3c3(%rip), %rsi     # 0x82d30
callq 0x81f40
jmp 0x15974
jmp 0x15a11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1599f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x89820
leaq -0x131(%rbp), %rdi
callq 0x1b2a0
leaq -0x110(%rbp), %rdi
callq 0x89820
jmp 0x161bc
movq -0x8(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x16770
jmp 0x159ce
movzbl 0xe3b54(%rip), %esi     # 0xf9529
andl $0x1, %esi
leaq -0x158(%rbp), %rdi
callq 0x16850
jmp 0x159e6
leaq -0x158(%rbp), %rdi
callq 0x89820
jmp 0x15a11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x89820
jmp 0x161bc
jmp 0x16199
leaq -0x178(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x15a28
leaq -0x199(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x1b280
movq -0x358(%rbp), %rdx
leaq 0xa7923(%rip), %rsi     # 0xbd36c
leaq -0x198(%rbp), %rdi
callq 0x17290
jmp 0x15a57
leaq -0x178(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x16340
movb %al, -0x359(%rbp)
jmp 0x15a72
leaq -0x198(%rbp), %rdi
callq 0x89820
leaq -0x199(%rbp), %rdi
callq 0x1b2a0
leaq -0x178(%rbp), %rdi
callq 0x89820
movb -0x359(%rbp), %al
testb $0x1, %al
jne 0x15aa5
jmp 0x15b90
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x35a(%rbp)
jmp 0x15ab6
movb -0x35a(%rbp), %al
testb $0x1, %al
jne 0x15ac2
jmp 0x15b3b
leaq 0xe4977(%rip), %rdi     # 0xfa440
leaq 0xa78a5(%rip), %rsi     # 0xbd375
callq 0x83450
movq %rax, -0x368(%rbp)
jmp 0x15ade
movq -0x368(%rbp), %rdi
leaq 0x6d244(%rip), %rsi     # 0x82d30
callq 0x81f40
jmp 0x15af3
jmp 0x15b8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x15b1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x89820
leaq -0x199(%rbp), %rdi
callq 0x1b2a0
leaq -0x178(%rbp), %rdi
callq 0x89820
jmp 0x161bc
movq -0x8(%rbp), %rdi
callq 0x174a0
movq %rax, -0x370(%rbp)
jmp 0x15b4d
movq -0x370(%rbp), %rdi
callq 0x8b260
movq %rax, %rdi
callq 0x12420
movl %eax, -0x1a0(%rbp)
movq -0x8(%rbp), %rdi
callq 0x174c0
jmp 0x15b72
movl -0x1a0(%rbp), %edi
movzbl 0xe39aa(%rip), %esi     # 0xf9529
andl $0x1, %esi
callq 0x16b10
jmp 0x15b89
jmp 0x15b8b
jmp 0x16197
leaq -0x1c0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x15ba2
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x1b280
movq -0x378(%rbp), %rdx
leaq 0xa77c7(%rip), %rsi     # 0xbd38a
leaq -0x1e0(%rbp), %rdi
callq 0x17290
jmp 0x15bd1
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x16340
movb %al, -0x379(%rbp)
jmp 0x15bec
leaq -0x1e0(%rbp), %rdi
callq 0x89820
leaq -0x1e1(%rbp), %rdi
callq 0x1b2a0
leaq -0x1c0(%rbp), %rdi
callq 0x89820
movb -0x379(%rbp), %al
testb $0x1, %al
jne 0x15c1c
jmp 0x15c75
movzbl 0xe3906(%rip), %edi     # 0xf9529
andl $0x1, %edi
callq 0x16e60
jmp 0x15c2d
jmp 0x16195
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x15c58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x89820
leaq -0x1e1(%rbp), %rdi
callq 0x1b2a0
leaq -0x1c0(%rbp), %rdi
callq 0x89820
jmp 0x161bc
leaq -0x208(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x15c87
leaq -0x229(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x1b280
movq -0x388(%rbp), %rdx
leaq 0xa76e8(%rip), %rsi     # 0xbd390
leaq -0x228(%rbp), %rdi
callq 0x17290
jmp 0x15cb6
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x16340
movb %al, -0x389(%rbp)
jmp 0x15cd1
leaq -0x228(%rbp), %rdi
callq 0x89820
leaq -0x229(%rbp), %rdi
callq 0x1b2a0
leaq -0x208(%rbp), %rdi
callq 0x89820
movb -0x389(%rbp), %al
testb $0x1, %al
jne 0x15d04
jmp 0x15def
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x38a(%rbp)
jmp 0x15d15
movb -0x38a(%rbp), %al
testb $0x1, %al
jne 0x15d21
jmp 0x15d9a
leaq 0xe4718(%rip), %rdi     # 0xfa440
leaq 0xa7646(%rip), %rsi     # 0xbd375
callq 0x83450
movq %rax, -0x398(%rbp)
jmp 0x15d3d
movq -0x398(%rbp), %rdi
leaq 0x6cfe5(%rip), %rsi     # 0x82d30
callq 0x81f40
jmp 0x15d52
jmp 0x15dea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x15d7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x89820
leaq -0x229(%rbp), %rdi
callq 0x1b2a0
leaq -0x208(%rbp), %rdi
callq 0x89820
jmp 0x161bc
movq -0x8(%rbp), %rdi
callq 0x174a0
movq %rax, -0x3a0(%rbp)
jmp 0x15dac
movq -0x3a0(%rbp), %rdi
callq 0x8b260
movq %rax, %rdi
callq 0x12420
movl %eax, -0x230(%rbp)
movq -0x8(%rbp), %rdi
callq 0x174c0
jmp 0x15dd1
movl -0x230(%rbp), %edi
movzbl 0xe374b(%rip), %esi     # 0xf9529
andl $0x1, %esi
callq 0x16cc0
jmp 0x15de8
jmp 0x15dea
jmp 0x16193
leaq -0x250(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x15e01
leaq -0x271(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x1b280
movq -0x3a8(%rbp), %rdx
leaq 0xa7575(%rip), %rsi     # 0xbd397
leaq -0x270(%rbp), %rdi
callq 0x17290
jmp 0x15e30
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x16340
movb %al, -0x3a9(%rbp)
jmp 0x15e4b
leaq -0x270(%rbp), %rdi
callq 0x89820
leaq -0x271(%rbp), %rdi
callq 0x1b2a0
leaq -0x250(%rbp), %rdi
callq 0x89820
movb -0x3a9(%rbp), %al
testb $0x1, %al
jne 0x15e7b
jmp 0x15ed4
movzbl 0xe36a7(%rip), %edi     # 0xf9529
andl $0x1, %edi
callq 0x17040
jmp 0x15e8c
jmp 0x16191
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x15eb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x89820
leaq -0x271(%rbp), %rdi
callq 0x1b2a0
leaq -0x250(%rbp), %rdi
callq 0x89820
jmp 0x161bc
leaq -0x298(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x15ee6
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x1b280
movq -0x3b8(%rbp), %rdx
leaq 0xa7496(%rip), %rsi     # 0xbd39d
leaq -0x2b8(%rbp), %rdi
callq 0x17290
jmp 0x15f15
leaq -0x298(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x16340
movb %al, -0x3b9(%rbp)
jmp 0x15f30
leaq -0x2b8(%rbp), %rdi
callq 0x89820
leaq -0x2b9(%rbp), %rdi
callq 0x1b2a0
leaq -0x298(%rbp), %rdi
callq 0x89820
movb -0x3b9(%rbp), %al
testb $0x1, %al
jne 0x15f63
jmp 0x16026
leaq 0xe44d6(%rip), %rdi     # 0xfa440
leaq 0xa7434(%rip), %rsi     # 0xbd3a5
callq 0x83450
movq %rax, -0x3c8(%rbp)
jmp 0x15f7f
movq -0x3c8(%rbp), %rdi
leaq 0xa742a(%rip), %rsi     # 0xbd3b7
callq 0x83450
movq %rax, -0x3d0(%rbp)
jmp 0x15f9b
movq -0x3d0(%rbp), %rdi
leaq 0x6cd87(%rip), %rsi     # 0x82d30
callq 0x81f40
jmp 0x15fb0
jmp 0x15fb2
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x3d1(%rbp)
jmp 0x15fc3
movb -0x3d1(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x15fd1
jmp 0x16021
movq -0x8(%rbp), %rdi
callq 0x174c0
jmp 0x15fdc
jmp 0x15fb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x16004
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x89820
leaq -0x2b9(%rbp), %rdi
callq 0x1b2a0
leaq -0x298(%rbp), %rdi
callq 0x89820
jmp 0x161bc
jmp 0x1618f
leaq -0x2e0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8bfb0
jmp 0x16038
leaq -0x301(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x1b280
movq -0x3e0(%rbp), %rdx
leaq 0xa7364(%rip), %rsi     # 0xbd3bd
leaq -0x300(%rbp), %rdi
callq 0x17290
jmp 0x16067
leaq -0x2e0(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x16340
movb %al, -0x3e1(%rbp)
jmp 0x16082
leaq -0x300(%rbp), %rdi
callq 0x89820
leaq -0x301(%rbp), %rdi
callq 0x1b2a0
leaq -0x2e0(%rbp), %rdi
callq 0x89820
movb -0x3e1(%rbp), %al
testb $0x1, %al
jne 0x160b2
jmp 0x1612c
jmp 0x160b4
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x3e2(%rbp)
jmp 0x160c5
movb -0x3e2(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x160d3
jmp 0x16123
movq -0x8(%rbp), %rdi
callq 0x174c0
jmp 0x160de
jmp 0x160b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x16106
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x89820
leaq -0x301(%rbp), %rdi
callq 0x1b2a0
leaq -0x2e0(%rbp), %rdi
callq 0x89820
jmp 0x161bc
callq 0x161d0
jmp 0x1612a
jmp 0x1618d
jmp 0x1612e
movq -0x8(%rbp), %rdi
callq 0x171f0
movb %al, -0x3e3(%rbp)
jmp 0x1613f
movb -0x3e3(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1614d
jmp 0x1615a
movq -0x8(%rbp), %rdi
callq 0x174c0
jmp 0x16158
jmp 0x1612e
leaq 0xe42df(%rip), %rdi     # 0xfa440
leaq 0xa725a(%rip), %rsi     # 0xbd3c2
callq 0x83450
movq %rax, -0x3f0(%rbp)
jmp 0x16176
movq -0x3f0(%rbp), %rdi
leaq 0x6cbac(%rip), %rsi     # 0x82d30
callq 0x81f40
jmp 0x1618b
jmp 0x1618d
jmp 0x1618f
jmp 0x16191
jmp 0x16193
jmp 0x16195
jmp 0x16197
jmp 0x16199
jmp 0x1619b
jmp 0x1619d
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x155c0
jmp 0x161aa
leaq -0x30(%rbp), %rdi
callq 0x89820
addq $0x3f0, %rsp            # imm = 0x3F0
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x89820
movq -0x50(%rbp), %rdi
callq 0xba910
nop