// File: /workspace/github_c_makefile_star2_O3/dwbuiten[P]obuparse/obuparse.c
// Function: obp_parse_metadata
int obp_parse_metadata(uint8_t *buf, size_t buf_size, OBPMetadata *metadata, OBPError *err)
{
    uint64_t val;
    ptrdiff_t consumed;
    char err_buf[1024];
    _OBPBitReader b;
    _OBPBitReader *br;
    OBPError error = { &err_buf[0], 1024 };

    int ret = _obp_leb128(buf, buf_size, &val, &consumed, &error);
    if (ret < 0) {
        snprintf(err->error, err->size, "Couldn't read metadata type: %s", error.error);
        return -1;
    }
    metadata->metadata_type = val;

    b  = _obp_new_br(buf + consumed, buf_size - consumed);
    br = &b;

    if (metadata->metadata_type == OBP_METADATA_TYPE_HDR_CLL) {
        _obp_br(metadata->metadata_hdr_cll.max_cll, br, 16);
        _obp_br(metadata->metadata_hdr_cll.max_fall, br, 16);
    } else if (metadata->metadata_type == OBP_METADATA_TYPE_HDR_MDCV) {
        for (int i = 0; i < 3; i++) {
            _obp_br(metadata->metadata_hdr_mdcv.primary_chromaticity_x[i], br, 16);
            _obp_br(metadata->metadata_hdr_mdcv.primary_chromaticity_y[i], br, 16);
        }
        _obp_br(metadata->metadata_hdr_mdcv.white_point_chromaticity_x, br, 16);
        _obp_br(metadata->metadata_hdr_mdcv.white_point_chromaticity_y, br, 16);
        _obp_br(metadata->metadata_hdr_mdcv.luminance_max, br, 32);
        _obp_br(metadata->metadata_hdr_mdcv.luminance_min, br, 32);
    } else if (metadata->metadata_type == OBP_METADATA_TYPE_SCALABILITY) {
        _obp_br(metadata->metadata_scalability.scalability_mode_idc, br, 8);
        if (metadata->metadata_scalability.scalability_mode_idc) {
            /* scalability_structure() */
            _obp_br(metadata->metadata_scalability.scalability_structure.spatial_layers_cnt_minus_1, br, 2);
            _obp_br(metadata->metadata_scalability.scalability_structure.spatial_layer_dimensions_present_flag, br, 1);
            _obp_br(metadata->metadata_scalability.scalability_structure.spatial_layer_description_present_flag, br, 1);
            _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_description_present_flag, br, 1);
            _obp_br(metadata->metadata_scalability.scalability_structure.scalability_structure_reserved_3bits, br, 3);
            if (metadata->metadata_scalability.scalability_structure.spatial_layer_dimensions_present_flag) {
                for (uint8_t i = 0; i < metadata->metadata_scalability.scalability_structure.spatial_layers_cnt_minus_1; i++) {
                    _obp_br(metadata->metadata_scalability.scalability_structure.spatial_layer_max_width[i], br, 16);
                    _obp_br(metadata->metadata_scalability.scalability_structure.spatial_layer_max_height[i], br, 16);
                }
            }
            if (metadata->metadata_scalability.scalability_structure.spatial_layer_description_present_flag) {
                for (uint8_t i = 0; i < metadata->metadata_scalability.scalability_structure.spatial_layers_cnt_minus_1; i++) {
                    _obp_br(metadata->metadata_scalability.scalability_structure.spatial_layer_ref_id[i], br, 8);
                }
            }
            if (metadata->metadata_scalability.scalability_structure.temporal_group_description_present_flag) {
                _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_size, br, 8);
                for (uint8_t i = 0; i < metadata->metadata_scalability.scalability_structure.temporal_group_size; i++) {
                    _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_temporal_id[i], br, 3);
                    _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_temporal_switching_up_point_flag[i], br, 1);
                    _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_spatial_switching_up_point_flag[i], br, 1);
                    _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_ref_cnt[i], br, 3);
                    for (uint8_t j = 0; j < metadata->metadata_scalability.scalability_structure.temporal_group_ref_cnt[i]; j++) {
                        _obp_br(metadata->metadata_scalability.scalability_structure.temporal_group_ref_pic_diff[i][j], br, 8);
                    }
                }
            }
        }
    } else if (metadata->metadata_type == OBP_METADATA_TYPE_ITUT_T35) {
        size_t offset = 1;
        _obp_br(metadata->metadata_itut_t35.itu_t_t35_country_code, br, 8);
        if (metadata->metadata_itut_t35.itu_t_t35_country_code == 0xFF) {
            _obp_br(metadata->metadata_itut_t35.itu_t_t35_country_code_extension_byte, br, 8);
            offset++;
        }
        metadata->metadata_itut_t35.itu_t_t35_payload_bytes = buf + consumed + offset;
        int non_zero_bytes_seen = 0;
        /*
         * OBUs with byte payloads at the end have a dumb property where you need to
         * know the trailing bits *before* you parse the OBU, despite the way the spec
         * the syntax displayed and defined. SO as a result, you need to find the *second*
         * non-zero byte at the end of the OBU payload, rather than the last one, as
         * the note in the ITU T.35 part of the spec says.
         */
        for (size_t i = buf_size - consumed - offset - 1; i > 0; i--) {
            if (metadata->metadata_itut_t35.itu_t_t35_payload_bytes[i] != 0) {
                non_zero_bytes_seen++;
                if (non_zero_bytes_seen == 2) {
                    metadata->metadata_itut_t35.itu_t_t35_payload_bytes_size = i + 1;
                }
            }
        }
    } else if (metadata->metadata_type == OBP_METADATA_TYPE_TIMECODE) {
        _obp_br(metadata->metadata_timecode.counting_type, br, 5);
        _obp_br(metadata->metadata_timecode.full_timestamp_flag, br, 1);
        _obp_br(metadata->metadata_timecode.discontinuity_flag, br, 1);
        _obp_br(metadata->metadata_timecode.cnt_dropped_flag, br, 1);
        _obp_br(metadata->metadata_timecode.n_frames, br, 9);
        if (metadata->metadata_timecode.full_timestamp_flag) {
            _obp_br(metadata->metadata_timecode.seconds_value, br, 6);
            _obp_br(metadata->metadata_timecode.minutes_value, br, 6);
            _obp_br(metadata->metadata_timecode.hours_value, br, 5);
        } else {
            _obp_br(metadata->metadata_timecode.seconds_flag, br, 1);
            if (metadata->metadata_timecode.seconds_flag) {
                _obp_br(metadata->metadata_timecode.seconds_value, br, 6);
                _obp_br(metadata->metadata_timecode.minutes_flag, br, 1);
                if (metadata->metadata_timecode.minutes_flag) {
                    _obp_br(metadata->metadata_timecode.minutes_value, br, 6);
                    _obp_br(metadata->metadata_timecode.hours_flag, br, 1);
                    if (metadata->metadata_timecode.hours_flag) {
                        _obp_br(metadata->metadata_timecode.hours_value, br, 5);
                    }
                }
            }
        }
        _obp_br(metadata->metadata_timecode.time_offset_length, br, 5);
        if (metadata->metadata_timecode.time_offset_length > 0) {
             _obp_br(metadata->metadata_timecode.time_offset_value, br, metadata->metadata_timecode.time_offset_length);
        }
    } else if (metadata->metadata_type >= 6 && metadata->metadata_type <= 31) {
        metadata->unregistered.buf      = buf + consumed;
        metadata->unregistered.buf_size = buf_size - consumed;
    } else {
        snprintf(err->error, err->size, "Invalid metadata type: %"PRIu32"\n", metadata->metadata_type);
        return -1;
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x408, %rsp            # imm = 0x408
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r12
xorl %ecx, %ecx
xorl %edx, %edx
xorl %eax, %eax
cmpq %rdx, %r15
je 0x2a7a
movzbl (%r12,%rdx), %esi
movl %esi, %edi
andl $0x7f, %edi
shlq %cl, %rdi
orq %rdi, %rax
leaq 0x1(%rdx), %r13
testb %sil, %sil
jns 0x29cc
addq $0x7, %rcx
cmpq $0x7, %rdx
movq %r13, %rdx
jne 0x299d
movl %eax, (%rbx)
leaq (%r12,%r13), %rcx
movq %r15, %rdx
subq %r13, %rdx
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
movb $0x0, 0x20(%rsp)
movq %rcx, (%rsp)
movq %rdx, 0x8(%rsp)
leal -0x1(%rax), %esi
cmpl $0x4, %esi
ja 0x3294
leaq 0x55ff(%rip), %rax      # 0x8000
movslq (%rax,%rsi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movzbl 0x20(%rsp), %eax
movl $0x17, %ebp
movl $0x17, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
subq 0x10(%rsp), %r15
subq %r13, %r15
cmpq %rax, %r15
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x20(%rbx)
movzbl 0x20(%r15), %eax
subl %eax, %ebp
sarl $0x3, %ebp
movslq %ebp, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x22(%rbx)
jmp 0x32aa
movups 0x5a3e(%rip), %xmm0     # 0x84bf
movq %rsp, %rcx
movaps %xmm0, 0x10(%rcx)
movups 0x5a20(%rip), %xmm0     # 0x84af
movaps %xmm0, (%rcx)
movabsq $0x2e65756c617620, %rax # imm = 0x2E65756C617620
movq %rax, 0x1f(%rcx)
movq (%r14), %rdi
movq 0x8(%r14), %rsi
leaq 0x5849(%rip), %rdx      # 0x82f7
xorl %eax, %eax
callq 0x1030
jmp 0x347e
movzbl 0x20(%rsp), %eax
movl $0xc, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
subq 0x10(%rsp), %r15
subq %r13, %r15
cmpq %rax, %r15
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x5, %esi
callq 0x244e
movb %al, 0x1264(%rbx)
movzbl 0x20(%r15), %eax
movl $0x8, %ebp
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x1268(%rbx)
movzbl 0x20(%r15), %eax
subl %eax, %ebp
sarl $0x3, %ebp
movslq %ebp, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x126c(%rbx)
movzbl 0x20(%r15), %eax
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x1270(%rbx)
movzbl 0x20(%r15), %eax
movl $0x10, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x9, %esi
callq 0x244e
movw %ax, 0x1274(%rbx)
movq 0x8(%r15), %rax
movzbl 0x20(%r15), %ecx
subq 0x10(%r15), %rax
cmpl $0x0, 0x1268(%rbx)
je 0x32cd
movl $0xd, %ebp
movl $0xd, %edx
subl %ecx, %edx
sarl $0x3, %edx
movslq %edx, %rcx
cmpq %rcx, %rax
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x6, %esi
callq 0x244e
movb %al, 0x1276(%rbx)
movzbl 0x20(%r15), %eax
subl %eax, %ebp
sarl $0x3, %ebp
movslq %ebp, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x6, %esi
callq 0x244e
movb %al, 0x1277(%rbx)
movzbl 0x20(%r15), %eax
movl $0xc, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x5, %esi
callq 0x244e
movb %al, 0x1278(%rbx)
jmp 0x340d
movzbl 0x20(%rsp), %eax
movl $0xf, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
subq 0x10(%rsp), %r15
subq %r13, %r15
cmpq %rax, %r15
jb 0x3469
movq %rsp, %rdi
movl $0x8, %esi
callq 0x244e
movb %al, 0x3c(%rbx)
xorl %ebp, %ebp
testb %al, %al
je 0x3483
movzbl 0x20(%rsp), %eax
movl $0x9, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x2, %esi
callq 0x244e
movb %al, 0x40(%rbx)
movzbl 0x20(%r15), %eax
movl $0x8, %r12d
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x44(%rbx)
movzbl 0x20(%r15), %eax
subl %eax, %r12d
sarl $0x3, %r12d
movslq %r12d, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x48(%rbx)
movzbl 0x20(%r15), %eax
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x4c(%rbx)
movzbl 0x20(%r15), %eax
movl $0xa, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x3, %esi
callq 0x244e
movb %al, 0x50(%rbx)
cmpl $0x0, 0x44(%rbx)
je 0x2e75
cmpb $0x0, 0x40(%rbx)
je 0x2e75
xorl %r12d, %r12d
movq %rsp, %r15
movzbl 0x20(%rsp), %eax
movl $0x17, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x52(%rbx,%r12,2)
movzbl 0x20(%rsp), %eax
movl $0x17, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x58(%rbx,%r12,2)
incq %r12
movzbl 0x40(%rbx), %eax
cmpq %rax, %r12
jb 0x2df9
cmpl $0x0, 0x48(%rbx)
je 0x2eca
cmpb $0x0, 0x40(%rbx)
je 0x2eca
xorl %r12d, %r12d
movq %rsp, %r15
movzbl 0x20(%rsp), %eax
movl $0xf, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x8, %esi
callq 0x244e
movb %al, 0x5e(%rbx,%r12)
incq %r12
movzbl 0x40(%rbx), %eax
cmpq %rax, %r12
jb 0x2e87
cmpl $0x0, 0x4c(%rbx)
je 0x3483
movzbl 0x20(%rsp), %eax
movl $0xf, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x8, %esi
callq 0x244e
movb %al, 0x61(%rbx)
testb %al, %al
je 0x3483
leaq 0xa64(%rbx), %r12
xorl %r13d, %r13d
movq %rsp, %r15
movzbl 0x20(%rsp), %eax
movl $0xa, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x3, %esi
callq 0x244e
movb %al, 0x62(%rbx,%r13)
movzbl 0x20(%rsp), %eax
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x164(%rbx,%r13,4)
movzbl 0x20(%rsp), %eax
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x564(%rbx,%r13,4)
movzbl 0x20(%rsp), %eax
movl $0xa, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x3, %esi
callq 0x244e
movb %al, 0x964(%rbx,%r13)
testb %al, %al
je 0x3050
xorl %ebp, %ebp
movzbl 0x20(%rsp), %eax
movl $0xf, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x8, %esi
callq 0x244e
movb %al, (%r12,%rbp)
incq %rbp
movzbl 0x964(%rbx,%r13), %eax
cmpq %rax, %rbp
jb 0x3009
incq %r13
movzbl 0x61(%rbx), %eax
addq $0x8, %r12
xorl %ebp, %ebp
cmpq %rax, %r13
jb 0x2f1e
jmp 0x3483
movzbl 0x20(%rsp), %eax
movl $0xf, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq %r15, %rcx
subq 0x10(%rsp), %rcx
subq %r13, %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x8, %esi
callq 0x244e
movb %al, 0x8(%rbx)
movl $0x1, %ecx
cmpb $-0x1, %al
jne 0x30e4
movzbl 0x20(%rsp), %eax
movl $0xf, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x8, %esi
callq 0x244e
movb %al, 0x9(%rbx)
movl $0x2, %ecx
leaq (%r12,%rcx), %rax
addq %r13, %rax
movq %rax, 0x10(%rbx)
movq %rcx, %rax
notq %rax
addq %r15, %rax
xorl %ebp, %ebp
cmpq %r13, %rax
je 0x3483
leaq (%r15,%r12), %rax
decq %rax
subq %rcx, %r15
subq %r13, %r15
xorl %ecx, %ecx
xorl %ebp, %ebp
cmpb $0x0, (%rax)
je 0x3129
incl %ecx
cmpl $0x2, %ecx
jne 0x3129
movq %r15, 0x18(%rbx)
movl $0x2, %ecx
decq %r15
decq %rax
cmpq $0x1, %r15
jne 0x3114
jmp 0x3483
movq $-0x3, %r12
movq %rsp, %r15
movzbl 0x20(%rsp), %eax
movl $0x17, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x2a(%rbx,%r12,2)
movzbl 0x20(%rsp), %eax
movl $0x17, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x30(%rbx,%r12,2)
incq %r12
jne 0x3144
movzbl 0x20(%rsp), %eax
movl $0x17, %ebp
movl $0x17, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x30(%rbx)
movzbl 0x20(%r15), %eax
subl %eax, %ebp
sarl $0x3, %ebp
movslq %ebp, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x10, %esi
callq 0x244e
movw %ax, 0x32(%rbx)
movzbl 0x20(%r15), %eax
movl $0x27, %ebp
movl $0x27, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x20, %esi
callq 0x244e
movl %eax, 0x34(%rbx)
movzbl 0x20(%r15), %eax
subl %eax, %ebp
sarl $0x3, %ebp
movslq %ebp, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x20, %esi
callq 0x244e
movl %eax, 0x38(%rbx)
jmp 0x32aa
leal -0x6(%rax), %esi
cmpl $0x19, %esi
ja 0x32b1
movq %rcx, 0x1290(%rbx)
movq %rdx, 0x1298(%rbx)
xorl %ebp, %ebp
jmp 0x3483
movq (%r14), %rdi
movq 0x8(%r14), %rsi
leaq 0x5058(%rip), %rdx      # 0x8317
movl %eax, %ecx
xorl %eax, %eax
callq 0x1030
jmp 0x347e
movl $0x8, %edx
subl %ecx, %edx
sarl $0x3, %edx
movslq %edx, %rcx
cmpq %rcx, %rax
jb 0x3469
movq %rsp, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x127c(%rbx)
testl %eax, %eax
je 0x340d
movzbl 0x20(%rsp), %eax
movl $0xd, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x6, %esi
callq 0x244e
movb %al, 0x1276(%rbx)
movzbl 0x20(%r15), %eax
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x1280(%rbx)
testl %eax, %eax
je 0x340d
movzbl 0x20(%rsp), %eax
movl $0xd, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %r15
movq %r15, %rdi
movl $0x6, %esi
callq 0x244e
movb %al, 0x1277(%rbx)
movzbl 0x20(%r15), %eax
movl $0x8, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%r15), %rcx
subq 0x10(%r15), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x1, %esi
callq 0x244e
movl %eax, 0x1284(%rbx)
testl %eax, %eax
je 0x340d
movzbl 0x20(%rsp), %eax
movl $0xc, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
jmp 0x2c71
movzbl 0x20(%rsp), %eax
movl $0xc, %ecx
subl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rax
movq 0x8(%rsp), %rcx
subq 0x10(%rsp), %rcx
cmpq %rax, %rcx
jb 0x3469
movq %rsp, %rdi
movl $0x5, %esi
callq 0x244e
movb %al, 0x1288(%rbx)
xorl %ebp, %ebp
testb %al, %al
je 0x3483
movzbl %al, %ecx
movzbl 0x20(%rsp), %edx
subl %edx, %ecx
addl $0x7, %ecx
sarl $0x3, %ecx
movslq %ecx, %rcx
movq 0x8(%rsp), %rdx
subq 0x10(%rsp), %rdx
cmpq %rcx, %rdx
jae 0x3497
movq (%r14), %rdi
movq 0x8(%r14), %rsi
leaq 0x4d42(%rip), %rdx      # 0x81b9
xorl %eax, %eax
callq 0x1030
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %ebp, %eax
addq $0x408, %rsp            # imm = 0x408
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movzbl %al, %esi
movq %rsp, %rdi
callq 0x244e
movl %eax, 0x128c(%rbx)
jmp 0x3483