// File: /workspace/github_cpp_makefile_star2_O1/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 $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rsi, %rdi
callq 0x31f0
movq %rax, -0x68(%rbp)
leaq -0x50(%rbp), %rsi
movl $0x2, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movzwl (%rsi), %eax
movw %ax, -0x52(%rbp)
movl $0x1, %edx
movq %r14, %rdi
callq 0x3160
movzbl -0x50(%rbp), %eax
movl %eax, -0x58(%rbp)
cmpw $0x0, -0x52(%rbp)
jne 0x3681
movq 0x6980(%rip), %rdi      # 0x9ff0
leaq 0x2a22(%rip), %rsi      # 0x6099
movl $0x49, %edx
callq 0x3150
movzwl -0x52(%rbp), %eax
movq %rax, -0x60(%rbp)
movl -0x58(%rbp), %eax
movl %eax, %r13d
cmpl $0x17, %eax
ja 0x3ae8
leaq 0x2981(%rip), %rax      # 0x6020
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 0x60a1(%rip), %rcx      # 0x9768
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x532e
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r12, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x36fe
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x370c
callq 0x50a8
testq %r15, %r15
je 0x3728
movq 0x68b0(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3723
incl 0x8(%r15)
jmp 0x3728
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x50(%rbp), %eax
movl %eax, 0x14(%r12)
jmp 0x4042
movl $0x18, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x60cb(%rip), %rcx      # 0x9848
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x55fe
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r12, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x37b4
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x37c2
callq 0x50a8
testq %r15, %r15
je 0x3d5e
movq 0x67f6(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3d59
incl 0x8(%r15)
jmp 0x3d5e
movl $0x38, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
xorl %ecx, %ecx
movq %rcx, 0x30(%rax)
leaq 0x6007(%rip), %rdx      # 0x9810
movq %rdx, (%rax)
movq %rax, %rdx
addq $0x28, %rdx
movq %rdx, 0x18(%rax)
movq %rcx, 0x20(%rax)
movb $0x0, 0x28(%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x554a
movq -0x50(%rbp), %r13
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r13, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x3853
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x3861
callq 0x50a8
testq %r15, %r15
je 0x3d81
movq 0x6757(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3d7c
incl 0x8(%r15)
jmp 0x3d81
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 0x5e47(%rip), %rsi      # 0x9700
movq %rsi, (%rax)
movq %rdx, 0x20(%rax)
xorl %edx, %edx
movq %rdx, 0x28(%rax)
movb $0x0, 0x30(%rax)
movq %rcx, 0x40(%rax)
movq %rdx, 0x48(%rax)
movl $0x0, 0x50(%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x526e
movq -0x50(%rbp), %r15
movq -0x48(%rbp), %r13
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r15, (%rbx)
movq 0x8(%rbx), %rdi
movq %r13, 0x8(%rbx)
testq %rdi, %rdi
je 0x390d
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x391b
callq 0x50a8
testq %r13, %r13
je 0x3dcb
movq 0x669d(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3dc6
incl 0x8(%r13)
jmp 0x3dcb
movl $0x20, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x5e80(%rip), %rcx      # 0x97d8
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5496
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r12, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x398f
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x399d
callq 0x50a8
testq %r15, %r15
je 0x3e7a
movq 0x661b(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3e75
incl 0x8(%r15)
jmp 0x3e7a
movl $0x28, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movq $0x0, 0x20(%rax)
leaq 0x5dbe(%rip), %rcx      # 0x97a0
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x53e2
movq -0x50(%rbp), %r15
movq -0x48(%rbp), %r13
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r15, (%rbx)
movq 0x8(%rbx), %rdi
movq %r13, 0x8(%rbx)
testq %rdi, %rdi
je 0x3a19
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x3a27
callq 0x50a8
testq %r13, %r13
je 0x3ec5
movq 0x6591(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3ec0
incl 0x8(%r13)
jmp 0x3ec5
movl $0x38, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
xorl %ecx, %ecx
movq %rcx, 0x30(%rax)
leaq 0x5e4a(%rip), %rdx      # 0x98b8
movq %rdx, (%rax)
movq %rax, %rdx
addq $0x28, %rdx
movq %rdx, 0x18(%rax)
movq %rcx, 0x20(%rax)
movb $0x0, 0x28(%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5766
movq -0x50(%rbp), %r13
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r13, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x3ab8
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x3ac6
callq 0x50a8
testq %r15, %r15
je 0x3f66
movq 0x64f2(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3f61
incl 0x8(%r15)
jmp 0x3f66
movq 0x6501(%rip), %rdi      # 0x9ff0
leaq 0x25ed(%rip), %rsi      # 0x60e3
movl $0x24, %edx
callq 0x3150
movq 0x64e9(%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 0x25ae(%rip), %rsi      # 0x6108
movl $0x3, %edx
movq %r15, %rdi
callq 0x3150
movq 0x6482(%rip), %rdi      # 0x9ff0
movq -0x68(%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 0x2574(%rip), %rsi      # 0x610c
movl $0x4, %edx
movq %r15, %rdi
callq 0x3150
movq %r15, %rdi
movq -0x60(%rbp), %rsi
callq 0x30e0
movq %rax, %r15
leaq 0x24d9(%rip), %rsi      # 0x6094
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 0x5b34(%rip), %rcx      # 0x9748
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x581a
movaps -0x50(%rbp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, -0x50(%rbp)
movq 0x8(%rbx), %rdi
movups %xmm0, (%rbx)
testq %rdi, %rdi
je 0x3c43
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
jne 0x404a
jmp 0x404f
movl $0x20, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x5b68(%rip), %rcx      # 0x97d8
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x5496
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r12, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x3ca7
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x3cb5
callq 0x50a8
testq %r15, %r15
je 0x3fb0
movq 0x6303(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3fab
incl 0x8(%r15)
jmp 0x3fb0
movl $0x20, %edi
callq 0x3130
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
leaq 0x5b8e(%rip), %rcx      # 0x9880
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
movq %rax, -0x8(%rdi)
movq %rax, %rsi
callq 0x56b2
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r12, (%rbx)
movq 0x8(%rbx), %rdi
movq %r15, 0x8(%rbx)
testq %rdi, %rdi
je 0x3d29
callq 0x50a8
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x3d37
callq 0x50a8
testq %r15, %r15
je 0x3ff8
movq 0x6281(%rip), %rax      # 0x9fc8
cmpb $0x0, (%rax)
je 0x3ff3
incl 0x8(%r15)
jmp 0x3ff8
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x50(%rbp), %eax
movl %eax, 0x10(%r12)
jmp 0x4042
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r13)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x50(%rbp), %eax
movl %eax, 0x14(%r13)
addq $0x18, %r13
movq %r14, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x33bd
jmp 0x4042
lock
incl 0x8(%r13)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x50(%rbp), %eax
movl %eax, 0x18(%r15)
leaq 0x20(%r15), %rsi
movq %r14, %rdi
movl $0x1, %edx
callq 0x33bd
testb %al, %al
je 0x3f50
leaq -0x50(%rbp), %rdi
movq %r14, %rsi
movl $0x1, %edx
callq 0x3483
addq $0x40, %r15
leaq -0x50(%rbp), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x3220
movq (%r12), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3f50
movq -0x40(%rbp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x3140
jmp 0x3f50
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r12)
movl $0x8, %edx
movq %r14, %rdi
callq 0x3160
jmp 0x4039
lock
incl 0x8(%r13)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x18(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x1c(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x20(%r15)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x50(%rbp), %eax
movl %eax, 0x24(%r15)
testq %r13, %r13
je 0x404f
movq %r13, %rdi
jmp 0x404a
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r13)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
movl -0x50(%rbp), %eax
movl %eax, 0x14(%r13)
addq $0x18, %r13
movq %r14, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x33bd
jmp 0x4042
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r12)
movl $0x8, %edx
movq %r14, %rdi
callq 0x3160
jmp 0x4039
lock
incl 0x8(%r15)
leaq -0x50(%rbp), %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x10(%r12)
movl $0x4, %edx
movq %r14, %rdi
callq 0x3160
leaq -0x50(%rbp), %rsi
movl (%rsi), %eax
movl %eax, 0x14(%r12)
movl $0x8, %edx
movq %r14, %rdi
callq 0x3160
movq -0x50(%rbp), %rax
movq %rax, 0x18(%r12)
testq %r15, %r15
je 0x404f
movq %r15, %rdi
callq 0x50a8
movq (%rbx), %rax
movzwl -0x52(%rbp), %ecx
movw %cx, 0x8(%rax)
movl -0x58(%rbp), %ecx
movl %ecx, 0xc(%rax)
movq %r14, %rdi
callq 0x31f0
movq -0x68(%rbp), %rcx
movq -0x60(%rbp), %rdx
addl %edx, %ecx
addl $0x2, %ecx
movslq %ecx, %rsi
cmpq %rsi, %rax
jge 0x4087
movq %r14, %rdi
xorl %edx, %edx
callq 0x3170
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x40bb
jmp 0x40c8
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40c8
jmp 0x40c8
jmp 0x40c8
jmp 0x40c8
jmp 0x40c8
jmp 0x40bb
movq %rax, %r14
testq %r13, %r13
je 0x40e5
movq %r13, %rdi
jmp 0x40d3
movq %rax, %r14
testq %r15, %r15
je 0x40e5
movq %r15, %rdi
callq 0x50a8
jmp 0x40e5
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
jmp 0x40e2
movq %rax, %r14
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
je 0x40f3
callq 0x50a8
movq %r14, %rdi
callq 0x3200