// File: salleaffaire[P]MXFParser/./mxf_base.hpp
// Function: mxf_file::mxf_file(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
mxf_file(std::string file_name) : m_file_name(file_name) {
      if (!m_is_UL_key_dictionary_init) {
         init_UL_key_dictionary();
         m_is_UL_key_dictionary_init = true;
      }

      std::ifstream in(m_file_name, std::ifstream::ate | std::ifstream::binary);
      if (in.fail()) {
         m_state = -1;
      }
      else {
         m_state = 0;
         
         m_file_size = in.tellg();

         // return at the begining
         in.seekg(0, in.beg);

         std::cout << "Opening : " << m_file_name
                   << " " << m_file_size << " bytes." << std::endl;

         // Allocate mem ory for file
         m_p_data = new uint8_t [m_file_size];

         // Read 
         in.read((char *)m_p_data, m_file_size);
         in.close();
      }
   }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq %rsi, -0x258(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x248(%rbp)
addq $0x8, %rdi
movq %rdi, -0x250(%rbp)
callq 0x6af0
movq -0x248(%rbp), %rdi
subq $-0x80, %rdi
movq %rdi, -0x240(%rbp)
callq 0x6b10
jmp 0x62de
movq -0x248(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
movq %rdi, -0x260(%rbp)
callq 0x6b30
jmp 0x62fa
movq -0x258(%rbp), %rsi
movq -0x248(%rbp), %rdi
addq $0x178, %rdi            # imm = 0x178
movq %rdi, -0x268(%rbp)
callq 0x3100
jmp 0x631d
movq -0x248(%rbp), %rdi
addq $0x1b0, %rdi            # imm = 0x1B0
movq %rdi, -0x270(%rbp)
callq 0x5070
leaq 0xaffa(%rip), %rax      # 0x11338
testb $0x1, (%rax)
jne 0x639a
callq 0x9a70
jmp 0x634a
leaq 0xafe7(%rip), %rax      # 0x11338
movb $0x1, (%rax)
jmp 0x639a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x6615
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x6609
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x65fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x65e5
movq -0x248(%rbp), %rax
addq $0x178, %rax            # imm = 0x178
movq %rax, -0x280(%rbp)
movl $0x2, %edi
movl $0x4, %esi
callq 0x6b50
movl %eax, -0x274(%rbp)
jmp 0x63c5
movl -0x274(%rbp), %edx
movq -0x280(%rbp), %rsi
leaq -0x228(%rbp), %rdi
callq 0x3330
jmp 0x63e0
movq -0x228(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x228(%rbp,%rax), %rdi
callq 0x3030
movb %al, -0x281(%rbp)
jmp 0x6400
movb -0x281(%rbp), %al
testb $0x1, %al
jne 0x640c
jmp 0x643f
movq -0x248(%rbp), %rax
movl $0xffffffff, 0x1a8(%rax) # imm = 0xFFFFFFFF
jmp 0x65d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x30b0
jmp 0x65e5
movq -0x248(%rbp), %rax
movl $0x0, 0x1a8(%rax)
leaq -0x228(%rbp), %rdi
callq 0x3370
movq %rdx, -0x298(%rbp)
movq %rax, -0x290(%rbp)
jmp 0x646c
movq -0x298(%rbp), %rax
movq -0x290(%rbp), %rcx
movq %rcx, -0x238(%rbp)
movq %rax, -0x230(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x6b70
movq %rax, -0x2a0(%rbp)
jmp 0x649d
movq -0x248(%rbp), %rax
movq -0x2a0(%rbp), %rcx
movl %ecx, 0x198(%rax)
xorl %edx, %edx
movl %edx, %esi
leaq -0x228(%rbp), %rdi
callq 0x32e0
jmp 0x64c3
movq 0xab0e(%rip), %rdi      # 0x10fd8
leaq 0x5eef(%rip), %rsi      # 0xc3c0
callq 0x31f0
movq %rax, -0x2a8(%rbp)
jmp 0x64df
movq -0x2a8(%rbp), %rdi
movq -0x248(%rbp), %rsi
addq $0x178, %rsi            # imm = 0x178
callq 0x31d0
movq %rax, -0x2b0(%rbp)
jmp 0x6502
movq -0x2b0(%rbp), %rdi
leaq 0x5fff(%rip), %rsi      # 0xc50f
callq 0x31f0
movq %rax, -0x2b8(%rbp)
jmp 0x651e
movq -0x2b8(%rbp), %rdi
movq -0x248(%rbp), %rax
movl 0x198(%rax), %esi
callq 0x32d0
movq %rax, -0x2c0(%rbp)
jmp 0x6540
movq -0x2c0(%rbp), %rdi
leaq 0x5e7d(%rip), %rsi      # 0xc3cb
callq 0x31f0
movq %rax, -0x2c8(%rbp)
jmp 0x655c
movq -0x2c8(%rbp), %rdi
movq 0xaa4e(%rip), %rsi      # 0x10fb8
callq 0x3230
jmp 0x6571
movq -0x248(%rbp), %rax
movl 0x198(%rax), %eax
movl %eax, %edi
callq 0x3040
movq %rax, -0x2d0(%rbp)
jmp 0x658e
movq -0x248(%rbp), %rax
movq -0x2d0(%rbp), %rcx
movq %rcx, 0x1a0(%rax)
movq 0x1a0(%rax), %rsi
movl 0x198(%rax), %eax
movl %eax, %edx
leaq -0x228(%rbp), %rdi
callq 0x32a0
jmp 0x65c0
leaq -0x228(%rbp), %rdi
callq 0x3090
jmp 0x65ce
jmp 0x65d0
leaq -0x228(%rbp), %rdi
callq 0x30b0
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
movq -0x270(%rbp), %rdi
callq 0x5050
movq -0x268(%rbp), %rdi
callq 0x33c8
movq -0x260(%rbp), %rdi
callq 0x6b90
movq -0x240(%rbp), %rdi
callq 0x6bb0
movq -0x250(%rbp), %rdi
callq 0x6bd0
movq -0x18(%rbp), %rdi
callq 0x3380
nopw (%rax,%rax)