// File: /workspace/github_cpp_makefile_star2_O3/lukasz-wiecaszek[P]h264iframedecoder/h264_parser.cpp
// Function: ymn::h264_parser::parse_pps(ymn::istream<0>&)
h264_parser_status_e h264_parser::parse_pps(istream_be& s)
{
    h264_parser_status_e retval = h264_parser_status_e::NAL_UNIT_CORRUPTED;

    do {
        bool status;
        uint32_t pic_parameter_set_id;
        uint32_t seq_parameter_set_id;

        if (!CHK_EXPR(s.read_exp_golomb_u(pic_parameter_set_id), std::cout) ||
            !CHK_RANGE(pic_parameter_set_id, 0U, static_cast<unsigned>(H264_PARSER_MAX_NUMBER_OF_PPS - 1), std::cout)) {
            s.mark_corrupted();
            break;
        }

        h264::pps& pps = m_pps_table[pic_parameter_set_id];
        pps.reset();

        if (!CHK_EXPR(s.read_exp_golomb_u(seq_parameter_set_id), std::cout) ||
            !CHK_RANGE(seq_parameter_set_id, 0U, static_cast<unsigned>(H264_PARSER_MAX_NUMBER_OF_SPS - 1), std::cout)) {
            s.mark_corrupted();
            break;
        }

        h264::sps& sps = m_sps_table[seq_parameter_set_id];
        if (!sps.is_valid()) {
            std::cout << "error: pps #" << pic_parameter_set_id;
            std::cout << " refers to sps #" << seq_parameter_set_id << " which is not valid";
            std::cout << std::endl;
            break;
        }

        pps.pic_parameter_set_id = pic_parameter_set_id;
        pps.seq_parameter_set_id = seq_parameter_set_id;

        pps.set_active_sps(&m_sps_table[seq_parameter_set_id]);

        s.read_bits(1, pps.entropy_coding_mode_flag);
        s.read_bits(1, pps.bottom_field_pic_order_in_frame_present_flag);

        if (!CHK_EXPR(s.read_exp_golomb_u(pps.num_slice_groups_minus1), std::cout) ||
            !CHK_STRUCT_RANGE(pps, num_slice_groups_minus1, 0U, 7U, std::cout)) {
            s.mark_corrupted();
            break;
        }

        if (pps.num_slice_groups_minus1 > 0) {
            /* 7.4.2.2 Picture parameter set RBSP semantics */
            /* slice_group_map_type specifies how the mapping of slice group map */
            /* units to slice groups is coded. The value of slice_group_map_type */
            /* shall be in the range of 0 to 6, inclusive.*/
            if (!CHK_EXPR(s.read_exp_golomb_u(pps.slice_group_map_type), std::cout) ||
                !CHK_STRUCT_RANGE(pps, slice_group_map_type, 0U, 6U, std::cout)) {
                s.mark_corrupted();
                break;
            }

            if (pps.slice_group_map_type == 0) {
                for (uint32_t iGroup = 0; iGroup <= pps.num_slice_groups_minus1; ++iGroup)
                    s.read_exp_golomb_u(pps.t0.run_length_minus1[iGroup]);
            }
            else
            if (pps.slice_group_map_type == 2) {
                for (uint32_t iGroup = 0; iGroup < pps.num_slice_groups_minus1; ++iGroup) {
                    s.read_exp_golomb_u(pps.t1.top_left[iGroup]);
                    s.read_exp_golomb_u(pps.t1.bottom_right[iGroup]);
                }
            }
            else
            if ((pps.slice_group_map_type == 3) ||
                (pps.slice_group_map_type == 4) ||
                (pps.slice_group_map_type == 5)) {
                s.read_bits(1, pps.t2.slice_group_change_direction_flag);
                s.read_exp_golomb_u(pps.t2.slice_group_change_rate_minus1);
            }
            else
            if (pps.slice_group_map_type == 6) {
                s.read_exp_golomb_u(pps.t3.pic_size_in_map_units_minus1);
                for (uint32_t i = 0; i <= pps.t3.pic_size_in_map_units_minus1; ++i)
                    s.read_bits(ilog2_roundup(pps.num_slice_groups_minus1 + 1), pps.t3.slice_group_id[i]);
            }
        }

        if (!CHK_EXPR(s.read_exp_golomb_u(pps.num_ref_idx_l0_default_active_minus1), std::cout) ||
            !CHK_STRUCT_RANGE(pps, num_ref_idx_l0_default_active_minus1, 0U, 31U, std::cout)) {
            s.mark_corrupted();
            break;
        }

        if (!CHK_EXPR(s.read_exp_golomb_u(pps.num_ref_idx_l1_default_active_minus1), std::cout) ||
            !CHK_STRUCT_RANGE(pps, num_ref_idx_l1_default_active_minus1, 0U, 31U, std::cout)) {
            s.mark_corrupted();
            break;
        }

        s.read_bits(1, pps.weighted_pred_flag);
        s.read_bits(2, pps.weighted_bipred_idc);

        if (!CHK_EXPR(s.read_exp_golomb_s(pps.pic_init_qp_minus26), std::cout) ||
            !CHK_STRUCT_RANGE(pps, pic_init_qp_minus26, -26 - 6 * static_cast<int>(sps.bit_depth_luma_minus8), +25, std::cout)) {
            s.mark_corrupted();
            break;
        }

        if (!CHK_EXPR(s.read_exp_golomb_s(pps.pic_init_qs_minus26), std::cout) ||
            !CHK_STRUCT_RANGE(pps, pic_init_qs_minus26, -26, +25, std::cout)) {
            s.mark_corrupted();
            break;
        }

        if (!CHK_EXPR(s.read_exp_golomb_s(pps.chroma_qp_index_offset), std::cout) ||
            !CHK_STRUCT_RANGE(pps, chroma_qp_index_offset, -12, +12, std::cout)) {
            s.mark_corrupted();
            break;
        }

        s.read_bits(1, pps.deblocking_filter_control_present_flag);
        s.read_bits(1, pps.constrained_intra_pred_flag);
        s.read_bits(1, pps.redundant_pic_cnt_present_flag);

        if (more_rbsp_data(s)) {
            s.read_bits(1, pps.transform_8x8_mode_flag);

            s.read_bits(1, pps.pic_scaling_matrix_present_flag);
            if (pps.pic_scaling_matrix_present_flag) {
                status = parse_scaling_matrices(s, pps.sm, pps.transform_8x8_mode_flag, sps.chroma_format_idc);
                if (!status)
                    break;
                const uint8_t (&fallback_4x4_intra)[16] =
                    sps.seq_scaling_matrix_present_flag ?
                        sps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Y].scaling_list : h264::scaling_list_default_4x4[0];
                const uint8_t (&fallback_4x4_inter)[16] =
                    sps.seq_scaling_matrix_present_flag ?
                        sps.sm.scaling_matrices_4x4[SL_4x4_INTER_Y].scaling_list : h264::scaling_list_default_4x4[1];
                const uint8_t (&fallback_8x8_intra)[64] =
                    sps.seq_scaling_matrix_present_flag ?
                        sps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Y].scaling_list : h264::scaling_list_default_8x8[0];
                const uint8_t (&fallback_8x8_inter)[64] =
                    sps.seq_scaling_matrix_present_flag ?
                        sps.sm.scaling_matrices_8x8[SL_8x8_INTER_Y].scaling_list : h264::scaling_list_default_8x8[1];

                /* for each list which is not transmited, use the fall-back scaling list
                   as defined in Table 7-2 � Assignment of mnemonic names to scaling list
                   indices and specification of fall-back rule */
                if (!pps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Y].scaling_list_present_flag)
                    pps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Y].copy(fallback_4x4_intra);
                if (!pps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Cb].scaling_list_present_flag)
                    pps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Cb].copy(sps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Y].scaling_list);
                if (!pps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Cr].scaling_list_present_flag)
                    pps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Cr].copy(sps.sm.scaling_matrices_4x4[SL_4x4_INTRA_Cb].scaling_list);
                if (!pps.sm.scaling_matrices_4x4[SL_4x4_INTER_Y].scaling_list_present_flag)
                    pps.sm.scaling_matrices_4x4[SL_4x4_INTER_Y].copy(fallback_4x4_inter);
                if (!pps.sm.scaling_matrices_4x4[SL_4x4_INTER_Cb].scaling_list_present_flag)
                    pps.sm.scaling_matrices_4x4[SL_4x4_INTER_Cb].copy(sps.sm.scaling_matrices_4x4[SL_4x4_INTER_Y].scaling_list);
                if (!pps.sm.scaling_matrices_4x4[SL_4x4_INTER_Cr].scaling_list_present_flag)
                    pps.sm.scaling_matrices_4x4[SL_4x4_INTER_Cr].copy(sps.sm.scaling_matrices_4x4[SL_4x4_INTER_Cb].scaling_list);

                if (pps.transform_8x8_mode_flag) {
                    if (!pps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Y].scaling_list_present_flag)
                        pps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Y].copy(fallback_8x8_intra);
                    if (!pps.sm.scaling_matrices_8x8[SL_8x8_INTER_Y].scaling_list_present_flag)
                        pps.sm.scaling_matrices_8x8[SL_8x8_INTER_Y].copy(fallback_8x8_inter);

                    if (sps.chroma_format_idc == 3) {
                        if (!pps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Cb].scaling_list_present_flag)
                            pps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Cb].copy(sps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Y].scaling_list);
                        if (!pps.sm.scaling_matrices_8x8[SL_8x8_INTER_Cb].scaling_list_present_flag)
                            pps.sm.scaling_matrices_8x8[SL_8x8_INTER_Cb].copy(sps.sm.scaling_matrices_8x8[SL_8x8_INTER_Y].scaling_list);
                        if (!pps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Cr].scaling_list_present_flag)
                            pps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Cr].copy(sps.sm.scaling_matrices_8x8[SL_8x8_INTRA_Cb].scaling_list);
                        if (!pps.sm.scaling_matrices_8x8[SL_8x8_INTER_Cr].scaling_list_present_flag)
                            pps.sm.scaling_matrices_8x8[SL_8x8_INTER_Cr].copy(sps.sm.scaling_matrices_8x8[SL_8x8_INTER_Cb].scaling_list);
                    }
                 }
            }
            else
                pps.sm = sps.sm; /* copy scaling matrices from corresponding sps */

            s.read_exp_golomb_s(pps.second_chroma_qp_index_offset);
        }
        else {
            pps.transform_8x8_mode_flag = 0;
            pps.sm = sps.sm; /* copy scaling matrices from corresponding sps */
            pps.second_chroma_qp_index_offset = pps.chroma_qp_index_offset;
        }

        if (s.status() != ISTREAM_STATUS_OK)
            break;

        m_recent_pps = pic_parameter_set_id;

        pps.set_valid(true);
        retval = h264_parser_status_e::PPS_PARSED;
    } while (0);

    return retval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xc(%rsp), %rsi
movq %rbx, %rdi
callq 0x70b4
testb %al, %al
je 0x53d0
movl 0xc(%rsp), %esi
leaq 0x133d7(%rip), %rdi     # 0x185f5
movq 0x1bd9b(%rip), %r15     # 0x20fc0
xorl %edx, %edx
movl $0xff, %ecx
movq %r15, %r8
callq 0x716b
testb %al, %al
je 0x545a
movl 0xc(%rsp), %eax
imulq $0x718, %rax, %r12      # imm = 0x718
movb $0x0, 0x16138(%r14,%r12)
leaq 0x1c(%rsp), %rsi
movq %rbx, %rdi
callq 0x70b4
testb %al, %al
je 0x544b
movl 0x1c(%rsp), %esi
leaq 0x13370(%rip), %rdi     # 0x185e0
movq 0x1bd49(%rip), %r13     # 0x20fc0
xorl %edx, %edx
movl $0x1f, %ecx
movq %r13, %r8
callq 0x716b
testb %al, %al
je 0x545a
movl 0x1c(%rsp), %eax
imulq $0xb00, %rax, %rcx      # imm = 0xB00
cmpb $0x0, 0x130(%r14,%rcx)
je 0x54cf
leaq (%r14,%r12), %r15
addq $0x16130, %r15          # imm = 0x16130
leaq 0x128(%r14,%rcx), %rbp
movl 0xc(%rsp), %ecx
movl %ecx, 0xc(%r15)
movl %eax, 0x10(%r15)
movq %rbp, 0x710(%r15)
leaq 0x14(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
leaq 0x18(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
leaq 0x1c(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x70b4
testb %al, %al
je 0x5550
movl (%r12), %esi
leaq 0x134dd(%rip), %rdi     # 0x187ef
movq 0x1bca7(%rip), %r8      # 0x20fc0
xorl %edx, %edx
movl $0x7, %ecx
callq 0x716b
testb %al, %al
je 0x545a
movq %rbp, 0x10(%rsp)
cmpl $0x0, (%r12)
je 0x5663
leaq 0x20(%r15), %r13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x70b4
movzbl %al, %esi
leaq 0x134b5(%rip), %rdi     # 0x1880b
movq 0x1bc63(%rip), %rdx     # 0x20fc0
callq 0x7000
testb %al, %al
je 0x545a
movl (%r13), %esi
leaq 0x134c4(%rip), %rdi     # 0x18839
movq 0x1bc44(%rip), %r8      # 0x20fc0
xorl %edx, %edx
movl $0x6, %ecx
callq 0x716b
testb %al, %al
je 0x545a
movl (%r13), %eax
cmpq $0x6, %rax
ja 0x5663
leaq 0x131eb(%rip), %rcx     # 0x18590
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x24(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
leaq 0x28(%r15), %rsi
movq %rbx, %rdi
callq 0x70b4
jmp 0x5663
movq 0x1bbe9(%rip), %r14     # 0x20fc0
movq (%r14), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x20(%r14,%rax)
jne 0x545a
leaq 0x13974(%rip), %rsi     # 0x18d61
movl $0x7, %edx
movq %r14, %rdi
callq 0x21d0
leaq 0x13361(%rip), %rsi     # 0x18762
movl $0x29, %edx
movq %r14, %rdi
callq 0x21d0
leaq 0x13954(%rip), %rsi     # 0x18d69
movl $0x7, %edx
movq %r14, %rdi
callq 0x21d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
jmp 0x545a
movq (%r15), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x20(%r15,%rax)
je 0x5474
orb $0x4, 0x20(%rbx)
movl $0x2, %ebp
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x138e6(%rip), %rsi     # 0x18d61
movl $0x7, %edx
movq %r15, %rdi
callq 0x21d0
leaq 0x131fb(%rip), %rsi     # 0x1868a
movl $0x29, %edx
movq %r15, %rdi
callq 0x21d0
leaq 0x138c6(%rip), %rsi     # 0x18d69
movl $0x7, %edx
movq %r15, %rdi
callq 0x21d0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %r15, %rdi
jmp 0x543c
leaq 0x132b6(%rip), %rsi     # 0x1878c
movl $0xc, %edx
movq %r13, %rdi
callq 0x21d0
movl 0xc(%rsp), %esi
movq %r13, %rdi
callq 0x2100
leaq 0x132a3(%rip), %rsi     # 0x18799
movl $0x10, %edx
movq %r13, %rdi
callq 0x21d0
movl 0x1c(%rsp), %esi
movq %r13, %rdi
callq 0x2100
leaq 0x13294(%rip), %rsi     # 0x187aa
movl $0x13, %edx
movq %rax, %rdi
callq 0x21d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
jmp 0x545e
movq (%r13), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x20(%r13,%rax)
jne 0x545a
leaq 0x137f6(%rip), %rsi     # 0x18d61
movl $0x7, %edx
movq %r13, %rdi
callq 0x21d0
leaq 0x1323f(%rip), %rsi     # 0x187be
movl $0x30, %edx
movq %r13, %rdi
callq 0x21d0
leaq 0x137d6(%rip), %rsi     # 0x18d69
movl $0x7, %edx
movq %r13, %rdi
callq 0x21d0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %r13, %rdi
jmp 0x543c
leaq 0x24(%r15), %rsi
movq %rbx, %rdi
movq %rsi, 0x20(%rsp)
callq 0x70b4
leaq 0x28(%r15), %rbp
xorl %r13d, %r13d
movl (%r12), %edi
incl %edi
callq 0x5c67
movl %r13d, %ecx
leaq (,%rcx,4), %rdx
addq %rbp, %rdx
movq %rbx, %rdi
movl %eax, %esi
callq 0x6ee2
incl %r13d
movq 0x20(%rsp), %rax
cmpl (%rax), %r13d
jbe 0x55d8
jmp 0x5663
leaq 0x24(%r15), %r13
xorl %ebp, %ebp
movl %ebp, %eax
leaq (,%rax,4), %rsi
addq %r13, %rsi
movq %rbx, %rdi
callq 0x70b4
incl %ebp
cmpl (%r12), %ebp
jbe 0x5610
jmp 0x5663
cmpl $0x0, (%r12)
je 0x5663
leaq 0x24(%r15), %r13
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r13, %rsi
callq 0x70b4
leaq 0x20(%r13), %rsi
movq %rbx, %rdi
callq 0x70b4
incq %rbp
movl (%r12), %eax
addq $0x4, %r13
cmpq %rax, %rbp
jb 0x563c
leaq 0x428(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x70b4
movzbl %al, %esi
leaq 0x131d3(%rip), %rdi     # 0x18852
movq 0x1b93a(%rip), %rdx     # 0x20fc0
callq 0x7000
testb %al, %al
je 0x545a
movl (%r12), %esi
leaq 0x131f2(%rip), %rdi     # 0x18890
movq 0x1b91b(%rip), %r8      # 0x20fc0
xorl %edx, %edx
movl $0x1f, %ecx
callq 0x716b
testb %al, %al
je 0x545a
leaq 0x42c(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x70b4
movzbl %al, %esi
leaq 0x131e4(%rip), %rdi     # 0x188b9
movq 0x1b8e4(%rip), %rdx     # 0x20fc0
callq 0x7000
testb %al, %al
je 0x545a
movl (%r12), %esi
leaq 0x13203(%rip), %rdi     # 0x188f7
movq 0x1b8c5(%rip), %r8      # 0x20fc0
xorl %edx, %edx
movl $0x1f, %ecx
callq 0x716b
testb %al, %al
je 0x545a
leaq 0x430(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
leaq 0x434(%r15), %rdx
movl $0x2, %ebp
movq %rbx, %rdi
movl $0x2, %esi
callq 0x6ee2
leaq 0x438(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x7410
movzbl %al, %esi
leaq 0x131c8(%rip), %rdi     # 0x18920
movq 0x1b861(%rip), %rdx     # 0x20fc0
callq 0x7000
testb %al, %al
je 0x5be6
movl (%r12), %esi
movq 0x10(%rsp), %rax
movl 0x18(%rax), %eax
addl %eax, %eax
leal (%rax,%rax,2), %eax
movl $0xffffffe6, %edx       # imm = 0xFFFFFFE6
subl %eax, %edx
leaq 0x131c2(%rip), %rdi     # 0x1894d
movq 0x1b82e(%rip), %r8      # 0x20fc0
movl $0x19, %ecx
callq 0x74dc
testb %al, %al
je 0x5be6
leaq 0x43c(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x7410
movzbl %al, %esi
leaq 0x131a5(%rip), %rdi     # 0x18965
movq 0x1b7f9(%rip), %rdx     # 0x20fc0
callq 0x7000
testb %al, %al
je 0x5be6
movl (%r12), %esi
leaq 0x131b3(%rip), %rdi     # 0x18992
movq 0x1b7da(%rip), %r8      # 0x20fc0
movl $0xffffffe6, %edx       # imm = 0xFFFFFFE6
movl $0x19, %ecx
callq 0x74dc
testb %al, %al
je 0x5be6
leaq 0x440(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x7410
movzbl %al, %esi
leaq 0x13191(%rip), %rdi     # 0x189aa
movq 0x1b7a0(%rip), %rdx     # 0x20fc0
callq 0x7000
testb %al, %al
je 0x5be6
movl (%r12), %esi
leaq 0x131a2(%rip), %rdi     # 0x189da
movq 0x1b781(%rip), %r8      # 0x20fc0
movl $0xfffffff4, %edx       # imm = 0xFFFFFFF4
movl $0xc, %ecx
callq 0x74dc
testb %al, %al
je 0x5be6
leaq 0x444(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
leaq 0x448(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
leaq 0x44c(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
movq %rbx, %rdi
callq 0x7778
testb %al, %al
je 0x5bef
leaq 0x450(%r15), %r12
movq %rbx, %rdi
movl $0x1, %esi
movq %r12, %rdx
callq 0x6ee2
leaq 0x454(%r15), %rdx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x6ee2
cmpl $0x0, 0x454(%r15)
je 0x5c1f
leaq 0x458(%r15), %rdx
xorl %ecx, %ecx
cmpl $0x0, 0x450(%r15)
setne %cl
movq 0x10(%rsp), %rax
movl 0x10(%rax), %r8d
movq %rbx, %rsi
callq 0x3f54
testb %al, %al
je 0x5463
movq 0x10(%rsp), %rax
movl 0x24(%rax), %r10d
leaq 0x48(%rax), %r9
leaq 0xa8(%rax), %rdi
leaq 0x108(%rax), %rcx
addq $0x158, %rax            # imm = 0x158
testl %r10d, %r10d
leaq 0x1353d(%rip), %r8      # 0x18e70
cmovneq %rdi, %r8
leaq 0x13542(%rip), %rsi     # 0x18e80
cmovneq %rcx, %rsi
leaq 0x13577(%rip), %rdx     # 0x18ec0
cmovneq %rax, %rdx
cmpl $0x0, 0x474(%r15)
jne 0x5979
testl %r10d, %r10d
leaq 0x134ff(%rip), %r10     # 0x18e60
cmovneq %r9, %r10
movups (%r10), %xmm0
movups %xmm0, 0x478(%r15)
movb $0x1, 0x470(%r15)
cmpl $0x0, 0x494(%r15)
jne 0x5997
movups (%r9), %xmm0
movups %xmm0, 0x498(%r15)
movb $0x1, 0x490(%r15)
cmpl $0x0, 0x4b4(%r15)
jne 0x59bb
movq 0x10(%rsp), %r9
movups 0x68(%r9), %xmm0
movups %xmm0, 0x4b8(%r15)
movb $0x1, 0x4b0(%r15)
cmpl $0x0, 0x4d4(%r15)
jne 0x59d9
movups (%r8), %xmm0
movups %xmm0, 0x4d8(%r15)
movb $0x1, 0x4d0(%r15)
cmpl $0x0, 0x4f4(%r15)
jne 0x59f6
movups (%rdi), %xmm0
movups %xmm0, 0x4f8(%r15)
movb $0x1, 0x4f0(%r15)
cmpl $0x0, 0x514(%r15)
jne 0x5a1c
movq 0x10(%rsp), %rdi
movups 0xc8(%rdi), %xmm0
movups %xmm0, 0x518(%r15)
movb $0x1, 0x510(%r15)
cmpl $0x0, (%r12)
je 0x5c34
cmpl $0x0, 0x534(%r15)
jne 0x5a68
movups (%rsi), %xmm0
movups 0x10(%rsi), %xmm1
movups 0x20(%rsi), %xmm2
movups 0x30(%rsi), %xmm3
movups %xmm3, 0x568(%r15)
movups %xmm2, 0x558(%r15)
movups %xmm1, 0x548(%r15)
movups %xmm0, 0x538(%r15)
movb $0x1, 0x530(%r15)
cmpl $0x0, 0x584(%r15)
jne 0x5aa9
movups (%rdx), %xmm0
movups 0x10(%rdx), %xmm1
movups 0x20(%rdx), %xmm2
movups 0x30(%rdx), %xmm3
movups %xmm3, 0x5b8(%r15)
movups %xmm2, 0x5a8(%r15)
movups %xmm1, 0x598(%r15)
movups %xmm0, 0x588(%r15)
movb $0x1, 0x580(%r15)
movq 0x10(%rsp), %rdx
cmpl $0x3, 0x10(%rdx)
jne 0x5c34
cmpl $0x0, 0x5d4(%r15)
jne 0x5af9
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups 0x30(%rcx), %xmm3
movups %xmm3, 0x608(%r15)
movups %xmm2, 0x5f8(%r15)
movups %xmm1, 0x5e8(%r15)
movups %xmm0, 0x5d8(%r15)
movb $0x1, 0x5d0(%r15)
cmpl $0x0, 0x624(%r15)
jne 0x5b3a
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movups %xmm3, 0x658(%r15)
movups %xmm2, 0x648(%r15)
movups %xmm1, 0x638(%r15)
movups %xmm0, 0x628(%r15)
movb $0x1, 0x620(%r15)
cmpl $0x0, 0x674(%r15)
jne 0x5b8d
movq 0x10(%rsp), %rax
movups 0x1a8(%rax), %xmm0
movups 0x1b8(%rax), %xmm1
movups 0x1c8(%rax), %xmm2
movups 0x1d8(%rax), %xmm3
movups %xmm3, 0x6a8(%r15)
movups %xmm2, 0x698(%r15)
movups %xmm1, 0x688(%r15)
movups %xmm0, 0x678(%r15)
movb $0x1, 0x670(%r15)
cmpl $0x0, 0x6c4(%r15)
jne 0x5c34
movq 0x10(%rsp), %rax
movups 0x1f8(%rax), %xmm0
movups 0x208(%rax), %xmm1
movups 0x218(%rax), %xmm2
movups 0x228(%rax), %xmm3
movups %xmm3, 0x6f8(%r15)
movups %xmm2, 0x6e8(%r15)
movups %xmm1, 0x6d8(%r15)
movups %xmm0, 0x6c8(%r15)
movb $0x1, 0x6c0(%r15)
jmp 0x5c34
orb $0x4, 0x20(%rbx)
jmp 0x5463
movl $0x0, 0x450(%r15)
movq 0x10(%rsp), %rsi
addq $0x28, %rsi
leaq 0x458(%r15), %rdi
callq 0x77cc
movl 0x440(%r15), %eax
movl %eax, 0x708(%r15)
jmp 0x5c43
movq 0x10(%rsp), %rsi
addq $0x28, %rsi
leaq 0x458(%r15), %rdi
callq 0x77cc
leaq 0x708(%r15), %rsi
movq %rbx, %rdi
callq 0x7410
cmpl $0x0, 0x20(%rbx)
jne 0x5463
movl 0xc(%rsp), %eax
movl %eax, 0x87930(%r14)
movb $0x1, 0x8(%r15)
movl $0x5, %ebp
jmp 0x5463