// File: /workspace/github_cpp_makefile_star2_O1/lukasz-wiecaszek[P]h264iframedecoder/./h264_parser.hpp
// Function: ymn::h264_parser::h264_parser(unsigned long, ymn::h264_parser_container_e)
explicit h264_parser(std::size_t capacity, h264_parser_container_e container) :
        base_parser<uint8_t>(capacity),
        m_parse_function(nullptr),
        m_aud(),
        m_sps_table(),
        m_recent_sps(-1),
        m_pps_table(),
        m_recent_pps(-1),
        m_sei(),
        m_slice_header(),
        m_slice_data()
    {
        switch (container) {
            case h264_parser_container_e::NONE:
                m_parse_function = &h264_parser::parse_nal_units;
                break;

            case h264_parser_container_e::ANNEX_B:
                m_parse_function = &h264_parser::parse_byte_stream_nal_units;
                break;

            default:
                /* do nothing */
                break;
        }

#if defined(DEBUG)
        std::cout << __PRETTY_FUNCTION__ << std::endl;
        std::cout << to_string() << std::endl;
#endif
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, 0x4(%rsp)
movq %rdi, %rbx
leaq 0xc44f(%rip), %rax      # 0x21a38
movq %rax, (%rdi)
movq %rsi, 0x40(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rdi)
xorl %r14d, %r14d
movq %r14, 0x90(%rdi)
movq %rsi, 0x98(%rdi)
movq $-0x1, 0xa0(%rdi)
movq %r14, 0xc0(%rdi)
movq %rsi, %rdi
callq 0x2030
movq %rax, 0xc0(%rbx)
movq %r14, 0x100(%rbx)
leaq 0xc656(%rip), %rax      # 0x21c90
movq %rax, (%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x108(%rbx)
movb $0x0, 0x120(%rbx)
leaq 0xc503(%rip), %rax      # 0x21b58
movq %rax, 0x118(%rbx)
leaq 0x150(%rbx), %r15
leaq 0xc536(%rip), %r13      # 0x21ba0
leaq 0xc517(%rip), %rbp      # 0x21b88
xorl %r12d, %r12d
movb %r14b, 0x130(%rbx,%r12)
leaq 0xc535(%rip), %rax      # 0x21bb8
movq %rax, 0x128(%rbx,%r12)
leaq (%r15,%r12), %rdi
callq 0x15e4e
movb %r14b, 0x850(%rbx,%r12)
movq %r13, 0x848(%rbx,%r12)
movb %r14b, 0x8b0(%rbx,%r12)
movq %rbp, 0x8a8(%rbx,%r12)
movb %r14b, 0xa60(%rbx,%r12)
movq %rbp, 0xa58(%rbx,%r12)
addq $0xb00, %r12            # imm = 0xB00
cmpq $0x16000, %r12          # imm = 0x16000
jne 0x15674
movl $0xffffffff, 0x16128(%rbx) # imm = 0xFFFFFFFF
leaq 0x16588(%rbx), %r14
movl $0x71800, %r15d         # imm = 0x71800
leaq 0xc4de(%rip), %r12      # 0x21bd0
movb $0x0, -0x450(%r14)
movq %r12, -0x458(%r14)
movq %r14, %rdi
callq 0x15e4e
addq $0x718, %r14            # imm = 0x718
addq $-0x718, %r15           # imm = 0xF8E8
jne 0x156f2
movl $0xffffffff, 0x87930(%rbx) # imm = 0xFFFFFFFF
xorl %eax, %eax
movb %al, 0x87940(%rbx)
leaq 0xc4b6(%rip), %rcx      # 0x21be8
movq %rcx, 0x87938(%rbx)
movb %al, 0x87968(%rbx)
leaq 0xc51a(%rip), %rcx      # 0x21c60
movq %rcx, 0x87960(%rbx)
movb %al, 0x879c0(%rbx)
leaq 0xc4a6(%rip), %rcx      # 0x21c00
movq %rcx, 0x879b8(%rbx)
movb %al, 0x879f0(%rbx)
movq %rcx, 0x879e8(%rbx)
movb %al, 0x87a20(%rbx)
leaq 0xc49d(%rip), %rcx      # 0x21c18
movq %rcx, 0x87a18(%rbx)
movb %al, 0x88248(%rbx)
leaq 0xc4a1(%rip), %rcx      # 0x21c30
movq %rcx, 0x88240(%rbx)
movb %al, 0x88260(%rbx)
leaq 0xc4a5(%rip), %rcx      # 0x21c48
movq %rcx, 0x88258(%rbx)
movb %al, 0x882e8(%rbx)
leaq 0xc4c1(%rip), %rax      # 0x21c78
movq %rax, 0x882e0(%rbx)
movl 0x4(%rsp), %eax
testl %eax, %eax
je 0x157d4
cmpl $0x1, %eax
jne 0x157ed
leaq -0xe8b0(%rip), %rax     # 0x6f22
jmp 0x157db
leaq -0xe8bd(%rip), %rax     # 0x6f1e
movq %rax, 0x108(%rbx)
movq $0x0, 0x110(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq