// File: /workspace/github_cpp_makefile_star2_O3/instance01[P]chromium-snss-parse/examples/../snss-parse-lib.hpp
// Function: read_next_session_command(std::basic_ifstream<char, std::char_traits<char>>&)
std::shared_ptr<Command> read_next_session_command(std::ifstream& f) {
    std::shared_ptr<Command> ret;
    int prev = f.tellg();
    uint16_t size = read_arbitrary<uint16_t>(f, 2);
    uint8_t type_id = read_arbitrary<uint8_t>(f, 1);

    if (0 == size) {
        std::cerr << "Error: Encountered command with size 0. This can indicate a corrupt file.";
    }

    // See https://0x1.pl/s/33 for all command ids
    switch(type_id) {
        case 6: // CommandUpdateTabNavigation
        {
            ret = std::shared_ptr<CommandUpdateTabNavigation>(new CommandUpdateTabNavigation());
            std::shared_ptr<CommandUpdateTabNavigation> ret2 = std::static_pointer_cast<CommandUpdateTabNavigation>(ret);
            ret2->pickle_size = read_arbitrary<uint32_t>(f, 4);
            ret2->tabid = read_arbitrary<int32_t>(f, 4);
            ret2->index = read_arbitrary<int32_t>(f, 4);
            if (read_string(f, ret2->url, true))
                ret2->title = read_string16(f, true);
            // TODO Add missing stuff
            break;
        }
        case 0: // CommandSetTabWindow
        case 2: // CommandSetTabIndexInWindow
        case 5: // CommandTabNavigationPathPrunedFromBack
        case 7: // CommandSetSelectedNavigationIndex
        case 8: // CommandSetSelectedTabInIndex
        case 9: // CommandSetWindowType
        case 12: // CommandSetPinnedState (TODO works, but we should read a bool here, not int!)
        {
            ret = std::shared_ptr<IDAndIndex>(new IDAndIndex());
            std::shared_ptr<IDAndIndex> ret2 = std::static_pointer_cast<IDAndIndex>(ret);
            //IDAndIndex & cmd = (IDAndIndex &) ret;
            ret2->id = read_arbitrary<uint32_t>(f, 4);
            ret2->index = read_arbitrary<int32_t>(f, 4);
            break;
        }
        case 14: // CommandSetWindowBounds3
        {
            ret = std::shared_ptr<CommandSetWindowBounds3>(new CommandSetWindowBounds3());
            std::shared_ptr<CommandSetWindowBounds3> ret2 = std::static_pointer_cast<CommandSetWindowBounds3>(ret);
            ret2->window_id = read_arbitrary<int32_t>(f, 4);
            ret2->x = read_arbitrary<int32_t>(f, 4);
            ret2->y = read_arbitrary<int32_t>(f, 4);
            ret2->width = read_arbitrary<int32_t>(f, 4);
            ret2->height = read_arbitrary<int32_t>(f, 4);
            ret2->show_state = read_arbitrary<int32_t>(f, 4);
            break;
        }
        case 16: // CommandTabClosed
        {
            ret = std::shared_ptr<CommandTabClosed>(new CommandTabClosed());
            std::shared_ptr<CommandTabClosed> ret2 = std::static_pointer_cast<CommandTabClosed>(ret);
            ret2->id = read_arbitrary<int32_t>(f, 4);
            ret2->UNKNOWN_0 = read_arbitrary<int32_t>(f, 4); // TODO
            ret2->close_time = read_arbitrary<int64_t>(f, 8);
            break;
        }
        case 17: // CommandWindowClosed
        {
            ret = std::shared_ptr<CommandWindowClosed>(new CommandWindowClosed());
            std::shared_ptr<CommandWindowClosed> ret2 = std::static_pointer_cast<CommandWindowClosed>(ret);
            ret2->id = read_arbitrary<int32_t>(f, 4);
            ret2->UNKNOWN_0 = read_arbitrary<int32_t>(f, 4); // TODO
            ret2->close_time = read_arbitrary<int64_t>(f, 8);
            break;
        }
        case 19: // CommandSessionStorageAssociated
        {
            ret = std::shared_ptr<CommandSessionStorageAssociated>(new CommandSessionStorageAssociated());
            std::shared_ptr<CommandSessionStorageAssociated> ret2 = std::static_pointer_cast<CommandSessionStorageAssociated>(ret);
            ret2->pickle_size = read_arbitrary<uint32_t>(f, 4);
            ret2->tabid = read_arbitrary<int32_t>(f, 4);
            read_string(f, ret2->session_storage_persistent_id, false);
            break;
        }
        case 20: // CommandSetActiveWindow
        {
            ret = std::shared_ptr<CommandSetActiveWindow>(new CommandSetActiveWindow());
            std::shared_ptr<CommandSetActiveWindow> ret2 = std::static_pointer_cast<CommandSetActiveWindow>(ret);
            ret2->window_id = read_arbitrary<uint32_t>(f, 4);
            break;
        }
        case 21: // CommandLastActiveTime
        {
            ret = std::shared_ptr<CommandLastActiveTime>(new CommandLastActiveTime());
            std::shared_ptr<CommandLastActiveTime> ret2 = std::static_pointer_cast<CommandLastActiveTime>(ret);
            ret2->id = read_arbitrary<int32_t>(f, 4);
            ret2->UNKNOWN_0 = read_arbitrary<int32_t>(f, 4); // TODO
            ret2->last_active_time = read_arbitrary<int64_t>(f, 8);
            break;
        }
        case 23: // CommandSetWindowWorkspace2
        {
            ret = std::shared_ptr<CommandSetWindowWorkspace2>(new CommandSetWindowWorkspace2());
            std::shared_ptr<CommandSetWindowWorkspace2> ret2 = std::static_pointer_cast<CommandSetWindowWorkspace2>(ret);
            ret2->pickle_size = read_arbitrary<uint32_t>(f, 4);
            ret2->window_id = read_arbitrary<int32_t>(f, 4);
            read_string(f, ret2->workspace, false);
            break;
        }
        default:
        {
            std::cerr << "Warning: Encountered unsupported id " << static_cast<uint16_t>(type_id) << std::endl;
            std::cerr << std::hex << "P: " << prev << std::dec << " S: " << size << " T: " << static_cast<uint16_t>(type_id) << std::endl;
            ret = std::shared_ptr<Command>(new Command());
        }
    }
    ret->size = size;
    ret->type = type_id;

    // Finish reading the command in case we skipped stuff
    // Size already includes the 2 bytes from the uint16 size
    prev += size + 2L;
    if (f.tellg() < prev) {
        f.seekg(prev);
    }
    return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rsi, %rdi
callq 0x31f0
movq %rax, -0x60(%rbp)
leaq -0x48(%rbp), %rsi
movl $0x2, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movzwl (%rsi), %eax
movw %ax, -0x4a(%rbp)
movl $0x1, %edx
movq %r14, %rdi
callq 0x3160
movzbl -0x48(%rbp), %eax
movl %eax, -0x50(%rbp)
cmpw $0x0, -0x4a(%rbp)
jne 0x3681
movq 0x6980(%rip), %rdi      # 0x9ff0
leaq 0x2a06(%rip), %rsi      # 0x607d
movl $0x49, %edx
callq 0x3150
movzwl -0x4a(%rbp), %eax
movq %rax, -0x58(%rbp)
movl -0x50(%rbp), %eax
movl %eax, %r13d
cmpl $0x17, %eax
ja 0x39e5
leaq 0x2965(%rip), %rax      # 0x6004
movslq (%rax,%r13,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl $0x18, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x60d9(%rip), %rcx      # 0x97a0
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x50ec
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r15
movq %r12, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3705
movq 0x68d3(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3700
incl 0x8(%r15)
jmp 0x3705
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x48(%rbp), %eax
movl %eax, 0x14(%r12)
jmp 0x3ed7
movl $0x18, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x6126(%rip), %rcx      # 0x9880
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x53bc
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r15
movq %r12, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3bf3
movq 0x683c(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3bee
incl 0x8(%r15)
jmp 0x3bf3
movl $0x38, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movq $0x0, 0x30(%rax)
leaq 0x6083(%rip), %rcx      # 0x9848
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x28, %rcx
movq %rcx, 0x18(%rax)
movb $0x0, 0x28(%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5308
movq -0x48(%rbp), %r13
movq -0x40(%rbp), %r15
movq %r13, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3c16
movq 0x67c2(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3c11
incl 0x8(%r15)
jmp 0x3c16
movl $0x60, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x20(%rax)
movaps %xmm0, 0x30(%rax)
movaps %xmm0, 0x40(%rax)
movaps %xmm0, 0x50(%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x50(%rax), %rcx
movq %rax, %rdx
addq $0x30, %rdx
leaq 0x5eea(%rip), %rsi      # 0x9738
movq %rsi, (%rax)
movq %rdx, 0x20(%rax)
movb $0x0, 0x30(%rax)
movq %rcx, 0x40(%rax)
movl $0x0, 0x50(%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5038
movq -0x48(%rbp), %r15
movq -0x40(%rbp), %r13
movq %r15, (%rbx)
movq %r13, 0x8(%rbx)
testq %r13, %r13
je 0x3c60
movq 0x6735(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3c5b
incl 0x8(%r13)
jmp 0x3c60
movl $0x20, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x5f50(%rip), %rcx      # 0x9810
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5254
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r15
movq %r12, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3d0f
movq 0x66d6(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3d0a
incl 0x8(%r15)
jmp 0x3d0f
movl $0x28, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movq $0x0, 0x20(%rax)
leaq 0x5eb1(%rip), %rcx      # 0x97d8
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x51a0
movq -0x48(%rbp), %r15
movq -0x40(%rbp), %r13
movq %r15, (%rbx)
movq %r13, 0x8(%rbx)
testq %r13, %r13
je 0x3d5a
movq 0x666f(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3d55
incl 0x8(%r13)
jmp 0x3d5a
movl $0x38, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movq $0x0, 0x30(%rax)
leaq 0x5f5e(%rip), %rcx      # 0x98f0
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x28, %rcx
movq %rcx, 0x18(%rax)
movb $0x0, 0x28(%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5524
movq -0x48(%rbp), %r13
movq -0x40(%rbp), %r15
movq %r13, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3dfb
movq 0x65f5(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3df6
incl 0x8(%r15)
jmp 0x3dfb
movq 0x6604(%rip), %rdi      # 0x9ff0
leaq 0x26d4(%rip), %rsi      # 0x60c7
movl $0x24, %edx
callq 0x3150
movq 0x65ec(%rip), %r15      # 0x9ff0
movq %r15, %rdi
movq %r13, %rsi
callq 0x30e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3120
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x30f0
movq (%r15), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x2695(%rip), %rsi      # 0x60ec
movl $0x3, %edx
movq %r15, %rdi
callq 0x3150
movq 0x6585(%rip), %rdi      # 0x9ff0
movq -0x60(%rbp), %rsi
callq 0x31e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rax
movl 0x18(%r15,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%r15,%rax)
leaq 0x265b(%rip), %rsi      # 0x60f0
movl $0x4, %edx
movq %r15, %rdi
callq 0x3150
movq %r15, %rdi
movq -0x58(%rbp), %rsi
callq 0x30e0
movq %rax, %r15
leaq 0x25c0(%rip), %rsi      # 0x6078
movl $0x4, %edx
movq %rax, %rdi
callq 0x3150
movq %r15, %rdi
movq %r13, %rsi
callq 0x30e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3120
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x30f0
movl $0x10, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
leaq 0x5c6f(%rip), %rcx      # 0x9780
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x55d8
movups -0x48(%rbp), %xmm0
movups %xmm0, (%rbx)
jmp 0x3ee4
movl $0x20, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x5cc5(%rip), %rcx      # 0x9810
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5254
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r15
movq %r12, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3e45
movq 0x644b(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3e40
incl 0x8(%r15)
jmp 0x3e45
movl $0x20, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x5d0e(%rip), %rcx      # 0x98b8
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5470
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r15
movq %r12, (%rbx)
movq %r15, 0x8(%rbx)
testq %r15, %r15
je 0x3e8d
movq 0x63ec(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3e88
incl 0x8(%r15)
jmp 0x3e8d
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x48(%rbp), %eax
movl %eax, 0x10(%r12)
jmp 0x3ed7
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r13)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x48(%rbp), %eax
movl %eax, 0x14(%r13)
addq $0x18, %r13
movq %r14, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x33bd
jmp 0x3ed7
lock
incl 0x8(%r13)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x48(%rbp), %eax
movl %eax, 0x18(%r15)
leaq 0x20(%r15), %rsi
movq %r14, %rdi
movl $0x1, %edx
callq 0x33bd
testb %al, %al
je 0x3de5
leaq -0x48(%rbp), %rdi
movq %r14, %rsi
movl $0x1, %edx
callq 0x3483
addq $0x40, %r15
leaq -0x48(%rbp), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x3220
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3de5
movq -0x38(%rbp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x3140
jmp 0x3de5
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r12)
movl $0x8, %edx
movq %r14, %rdi
callq 0x3160
jmp 0x3ece
lock
incl 0x8(%r13)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x18(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x1c(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x20(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x48(%rbp), %eax
movl %eax, 0x24(%r15)
testq %r13, %r13
je 0x3ee4
movq %r13, %rdi
jmp 0x3edf
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r13)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x48(%rbp), %eax
movl %eax, 0x14(%r13)
addq $0x18, %r13
movq %r14, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x33bd
jmp 0x3ed7
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r12)
movl $0x8, %edx
movq %r14, %rdi
callq 0x3160
jmp 0x3ece
lock
incl 0x8(%r15)
leaq -0x48(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x48(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r12)
movl $0x8, %edx
movq %r14, %rdi
callq 0x3160
movq -0x48(%rbp), %rax
movq %rax, 0x18(%r12)
testq %r15, %r15
je 0x3ee4
movq %r15, %rdi
callq 0x4e72
movq (%rbx), %rax
movzwl -0x4a(%rbp), %ecx
movw %cx, 0x8(%rax)
movl -0x50(%rbp), %ecx
movl %ecx, 0xc(%rax)
movq %r14, %rdi
callq 0x31f0
movq -0x60(%rbp), %rcx
movq -0x58(%rbp), %rdx
addl %edx, %ecx
addl $0x2, %ecx
movslq %ecx, %rsi
cmpq %rsi, %rax
jge 0x3f1c
movq %r14, %rdi
xorl %edx, %edx
callq 0x3170
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3f50
jmp 0x3f5d
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f5d
jmp 0x3f5d
jmp 0x3f5d
jmp 0x3f5d
jmp 0x3f5d
jmp 0x3f50
movq %rax, %r14
testq %r13, %r13
je 0x3f7a
movq %r13, %rdi
jmp 0x3f68
movq %rax, %r14
testq %r15, %r15
je 0x3f7a
movq %r15, %rdi
callq 0x4e72
jmp 0x3f7a
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
jmp 0x3f77
movq %rax, %r14
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x3f88
callq 0x4e72
movq %r14, %rdi
callq 0x3200