Function at 0x629745a0
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0xe4]
sub esp, 0x24c
mov dword [ebp - 0x200], ecx
mov eax, dword [ebp + 8]
mov ecx, eax
mov dword [eax + 8], 0
mov dword [esp], ebx
mov dword [esp + 4], 0xcc
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
cmp edx, 0xcc
push eax
push eax
je 0x629745ea
mov byte [ebp - 0x221], 0
jmp 0x62975fa9
mov ecx, dword [ebp + 8]
mov dword [esp], 0xcc
call fcn.62924a9c
push eax
mov eax, ebx
call method.OpenMPT.ValidateHeader_OpenMPT::STPFileHeader_const_
mov byte [ebp - 0x221], al
test al, al
je 0x62975fa9
cmp dword [ebp + 0xc], 0x40
je 0x62975fa9
mov ecx, dword [ebp - 0x200]
mov dword [esp], 0x8000000
call method.OpenMPT::CSoundFile.InitializeGlobals_OpenMPT::MODTYPE_
lea ecx, [ebp - 0x14c]
lea ebx, [ebp - 0x1b4]
push eax
lea eax, [ebp - 0x144]
mov byte [esp + 8], 0
mov dword [esp + 4], 0x62b1c47b
mov dword [esp], str.Soundtracker_Pro_II_v
mov dword [ebp - 0x14c], eax
call sym.__ZNSt7__cxx1112basic_stringIcN3mpt14mpt_libopenmpt20encoding_char_traitsILNS2_15common_encodingE0ES4_EESaIcEE12_M_constructIP
lea eax, [ebp - 0x14c]
sub esp, 0xc
mov ecx, ebx
mov dword [esp], eax
call fcn.62a63778
lea ecx, [ebp - 0x14c]
push eax
call method.std::__cxx11::basic_string_char__mpt::mpt_libopenmpt.encoding_char_traits__mpt::mpt_libopenmpt::common_encoding_0__mpt::mpt_libopenmpt::common_encoding___std::allocator_char___::_M_dispose__
lea eax, [ebp - 0xe0]
mov dword [esp], ebx
mov dword [esp + 4], eax
lea ecx, [ebp - 0x14c]
call fcn.629c79dc
mov eax, dword [ebp - 0x200]
push ecx
push ecx
lea ecx, [eax + 0x13cff0]
lea eax, [ebp - 0x14c]
mov dword [esp], eax
call method.std::__cxx11::basic_string_char__mpt::mpt_libopenmpt.encoding_char_traits__mpt::mpt_libopenmpt::common_encoding_0__mpt::mpt_libopenmpt::common_encoding___std::allocator_char___::operator_std::__cxx11::basic_string_char__mpt::mpt_libopenmpt::encodi
lea ecx, [ebp - 0x14c]
push esi
call method.std::__cxx11::basic_string_char__mpt::mpt_libopenmpt.encoding_char_traits__mpt::mpt_libopenmpt::common_encoding_0__mpt::mpt_libopenmpt::common_encoding___std::allocator_char___::_M_dispose__
mov ecx, ebx
call method.std::__cxx11::basic_string_char__mpt::mpt_libopenmpt.encoding_char_traits__mpt::mpt_libopenmpt::common_encoding_0__mpt::mpt_libopenmpt::common_encoding___std::allocator_char___::_M_dispose__
lea eax, [ebp - 0x144]
lea ecx, [ebp - 0x14c]
mov byte [esp + 8], 0
mov dword [esp + 4], 0x62b1c47f
mov dword [esp], 0x62b1c47c
mov dword [ebp - 0x14c], eax
call sym.__ZNSt7__cxx1112basic_stringIcN3mpt14mpt_libopenmpt20encoding_char_traitsILNS2_15common_encodingE0ES4_EESaIcEE12_M_constructIP
mov eax, dword [ebp - 0x200]
sub esp, 0xc
lea ecx, [eax + 0x13d008]
lea eax, [ebp - 0x14c]
mov dword [esp], eax
call method.std::__cxx11::basic_string_char__mpt::mpt_libopenmpt.encoding_char_traits__mpt::mpt_libopenmpt::common_encoding_0__mpt::mpt_libopenmpt::common_encoding___std::allocator_char___::operator_std::__cxx11::basic_string_char__mpt::mpt_libopenmpt::encodi
lea ecx, [ebp - 0x14c]
push edi
call method.std::__cxx11::basic_string_char__mpt::mpt_libopenmpt.encoding_char_traits__mpt::mpt_libopenmpt::common_encoding_0__mpt::mpt_libopenmpt::common_encoding___std::allocator_char___::_M_dispose__
mov eax, dword [ebp - 0x200]
mov edi, dword [ebp - 0x200]
mov dword [eax + 0x13d068], 0x1c
mov dword [eax + 0x753bc], 4
movzx eax, word [ebp - 0x5c]
xchg al, ah
movzx eax, ax
mov dword [edi + 0x753c4], eax
movzx eax, word [ebp - 0x58]
xchg al, ah
movzx eax, ax
call method.OpenMPT.ConvertTempo_unsigned_short_
mov edi, dword [ebp - 0x200]
movzx ebx, byte [edi + 0x76418]
imul ebx, ebx, 0x2c
movzx esi, byte [ebp - 0xde]
add ebx, dword [edi + 0x76408]
mov dword [edi + 0x753cc], eax
mov dword [edi + 0x75404], 0x38
mov dword [edi + 0x75408], 0x3580
cmp esi, 0x80
jbe 0x62974798
mov esi, pe_nt_image_headers32
mov ecx, dword [ebx + 4]
mov eax, dword [ebx]
mov edx, ecx
mov word [ebp - 0x14c], 0xffff
sub edx, eax
sar edx, 1
cmp esi, edx
jbe 0x629747d1
lea eax, [ebp - 0x14c]
mov dword [esp], ecx
mov dword [esp + 8], eax
mov eax, esi
sub eax, edx
mov ecx, ebx
mov dword [esp + 4], eax
call method.std::vector_unsigned_short__std::allocator_unsigned_short___._M_fill_insert___gnu_cxx::__normal_iterator_unsigned_short__std::vector_unsigned_short__std::allocator_unsigned_short_______unsigned_int__unsigned_short_const_
sub esp, 0xc
jmp 0x629747df
jae 0x629747df
lea edx, [esi + esi]
add eax, edx
cmp ecx, eax
je 0x629747df
mov dword [ebx + 4], eax
xor eax, eax
cmp esi, eax
jle 0x62974815
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
sub edx, ecx
sar edx, 1
movzx edi, byte [ebp + eax - 0xdc]
cmp edx, eax
ja 0x6297480e
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], 0x62b1c480
call method.std.__throw_out_of_range_fmt_char_const__..._
mov word [ecx + eax*2], di
inc eax
jmp 0x629747e1
mov dword [ebp - 0x1f4], 0
mov dword [ebp - 0x1f0], 0
mov dword [ebp - 0x1ec], 0
mov dword [ebp - 0x1e8], 0
mov dword [ebp - 0x1e4], 0
mov dword [ebp - 0x1e0], 0
mov word [ebp - 0x20e], 0
mov word [ebp - 0x210], 0
movzx eax, word [ebp - 0x1c]
xchg al, ah
cmp word [ebp - 0x20e], ax
jae 0x62974f61
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov esi, eax
lea eax, [esi - 1]
cmp ax, 0xf9e
ja 0x62975f15
cmp word [ebp - 0xe0], 0x200
je 0x629748a6
movzx ebx, word [ebp - 0x1a]
xchg bl, bh
movzx ebx, bx
jmp 0x629748b4
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
lea ebx, [eax - 2]
mov eax, dword [ebp + 8]
mov ecx, eax
mov edi, dword [eax + 8]
mov dword [esp], ebx
call fcn.62924a9c
mov eax, dword [ebp + 8]
push edx
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], eax
lea ecx, [ebp - 0x1c8]
call fcn.629c8c18
mov eax, dword [ebp - 0x1c8]
sub esp, 0xc
mov dword [ebp - 0x1dc], eax
mov eax, dword [ebp - 0x1c4]
mov dword [ebp - 0x1d8], eax
mov eax, dword [ebp - 0x1c0]
mov dword [ebp - 0x1d4], eax
mov eax, dword [ebp - 0x1bc]
mov dword [ebp - 0x1d0], eax
lea ecx, [ebp - 0x1c8]
mov eax, dword [ebp - 0x1b8]
mov dword [ebp - 0x1c4], 0
mov dword [ebp - 0x1cc], eax
mov dword [ebp - 0x1c8], 0
mov dword [ebp - 0x1b8], 0
mov dword [ebp - 0x1bc], 0
call fcn.62925dc8
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, si
mov word [ebp - 0x210], ax
jae 0x62974970
mov word [ebp - 0x210], si
mov eax, dword [ebp - 0x200]
mov edi, dword [ebp - 0x210]
mov word [eax + 0x753be], di
mov dword [esp], 1
movzx eax, si
imul ebx, eax, 0x68
mov dword [ebp - 0x208], eax
mov eax, dword [ebp - 0x200]
lea eax, [eax + ebx + 0x7641c]
mov ecx, eax
mov dword [ebp - 0x20c], eax
call method.OpenMPT::ModSample.Initialize_OpenMPT::MODTYPE_
push eax
lea ebx, [ebx + 0x76447]
movzx eax, word [ebp - 0xe0]
xchg al, ah
cmp ax, 1
ja 0x62974b51
mov eax, dword [ebp - 0x200]
mov dword [esp + 4], 0x1f
lea ecx, [ebp - 0x1b4]
mov dword [ebp - 0x1ac], 0
lea esi, [eax + ebx]
lea ebx, [ebp - 0x1dc]
mov dword [esp], ebx
mov dword [ebp - 0x1a8], 0
mov dword [ebp - 0x1a4], 0
call fcn.62924398
push eax
mov ecx, ebx
push eax
mov eax, dword [ebp - 0x1b4]
mov dword [esp], eax
call fcn.62924a9c
lea ecx, [ebp - 0x1b4]
push eax
call fcn.629c8be0
lea ebx, [ebp - 0x14c]
mov edx, dword [ebp - 0x1b4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], 2
mov dword [esp], ebx
call method.OpenMPT::mpt::String::detail.ReadStringBuffer_abi:cxx11__OpenMPT::mpt::String::ReadWriteMode__char_const__unsigned_int_
jmp 0x62974a56
mov ecx, esi
mov dword [esp], ebx
call method.mpt::mpt_libopenmpt::charbuf_22u_.operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov ecx, ebx
push eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea ecx, [ebp - 0x1ac]
call fcn.62a3246c
mov dword [esp], 1
lea ecx, [ebp - 0x1dc]
call fcn.62924a9c
push eax
mov eax, dword [ebp - 0x208]
lea ebx, [ebp - 0x1dc]
mov dword [esp + 4], 0x1e
lea esi, [eax + 0x7384]
mov dword [esp], ebx
shl esi, 5
lea ecx, [ebp - 0x1b4]
add esi, dword [ebp - 0x200]
mov dword [ebp - 0x1ac], 0
mov dword [ebp - 0x1a8], 0
mov dword [ebp - 0x1a4], 0
call fcn.62924398
jmp 0x62974ad9
push edi
mov eax, dword [ebp - 0x1b4]
push edi
mov ecx, ebx
mov dword [esp], eax
call fcn.62924a9c
push ecx
lea ecx, [ebp - 0x1b4]
call fcn.629c8be0
lea ebx, [ebp - 0x14c]
mov edx, dword [ebp - 0x1b4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], 2
mov dword [esp], ebx
call method.OpenMPT::mpt::String::detail.ReadStringBuffer_abi:cxx11__OpenMPT::mpt::String::ReadWriteMode__char_const__unsigned_int_
mov ecx, esi
mov dword [esp], ebx
call method.mpt::mpt_libopenmpt::charbuf_32u_.operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov ecx, ebx
push edx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea ecx, [ebp - 0x1ac]
call fcn.62a3246c
jmp 0x62974c12
lea eax, [ebp - 0x144]
lea esi, [ebp - 0x14c]
mov dword [ebp - 0x14c], eax
lea eax, [ebp - 0x1dc]
mov dword [esp + 8], 0x101
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [ebp - 0x148], 0
mov byte [ebp - 0x144], 0
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader14ReadNullStringIN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24File
mov eax, dword [ebp - 0x200]
mov dword [esp], esi
lea ecx, [eax + ebx]
call method.mpt::mpt_libopenmpt::charbuf_22u_.operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea ecx, [ebp - 0x1dc]
push eax
mov dword [esp], 1
call fcn.62924a9c
push eax
lea eax, [ebp - 0x1dc]
mov dword [esp + 8], 0x1f
mov dword [esp + 4], esi
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader14ReadNullStringIN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24File
mov eax, dword [ebp - 0x208]
mov dword [esp], esi
lea ecx, [eax + 0x7384]
shl ecx, 5
add ecx, dword [ebp - 0x200]
call method.mpt::mpt_libopenmpt::charbuf_32u_.operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
test byte [ebp - 0x1d4], 1
push eax
je 0x62974c07
mov dword [esp], 1
lea ecx, [ebp - 0x1dc]
call fcn.62924a9c
push eax
lea ecx, [ebp - 0x14c]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea eax, [ebp - 0x14c]
mov dword [esp + 4], 0x14
mov dword [esp], eax
lea ecx, [ebp - 0x1dc]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 0x14
push eax
jne 0x62974c4a
mov dword [esp], 0x14
lea ecx, [ebp - 0x1dc]
call fcn.62924a9c
push edi
jmp 0x62974c59
lea edi, [ebp - 0x14c]
mov ecx, 5
xor eax, eax
rep stosd dword es:[edi], eax
imul edx, dword [ebp - 0x208], 0x68
add edx, dword [ebp - 0x200]
mov eax, dword [ebp - 0x14c]
bswap eax
mov dword [edx + 0x7641c], eax
movzx eax, byte [ebp - 0x148]
cmp al, 0x40
jbe 0x62974c84
mov eax, 0x40
shl eax, 2
mov ecx, dword [ebp - 0x146]
mov word [edx + 0x7643a], ax
mov eax, dword [ebp - 0x142]
imul edx, dword [ebp - 0x208], 0x68
add edx, dword [ebp - 0x200]
bswap ecx
bswap eax
add eax, ecx
mov ebx, dword [edx + 0x7641c]
mov dword [edx + 0x76420], ecx
mov dword [edx + 0x76424], eax
cmp ecx, ebx
jb 0x62974ccc
lea ecx, [ebx - 1]
mov dword [edx + 0x76420], ecx
cmp eax, ebx
jbe 0x62974ce4
imul eax, dword [ebp - 0x208], 0x68
mov edi, dword [ebp - 0x200]
mov dword [edi + eax + 0x76424], ebx
imul eax, dword [ebp - 0x208], 0x68
add eax, dword [ebp - 0x200]
mov edx, dword [eax + 0x76420]
cmp edx, dword [eax + 0x76424]
jbe 0x62974d15
mov dword [eax + 0x76420], 0
mov dword [eax + 0x76424], 0
jmp 0x62974d25
jae 0x62974d25
mov eax, dword [ebp - 0x20c]
or word [eax + 0x22], 2
mov dword [eax + 0x44], edx
movzx eax, word [ebp - 0xe0]
mov edx, eax
xchg dl, dh
cmp eax, 0x200
jne 0x62974d57
imul edx, dword [ebp - 0x208], 0x68
movzx eax, byte [ebp - 0x13a]
shl eax, 3
mov edi, dword [ebp - 0x200]
mov byte [edi + edx + 0x76441], al
jmp 0x62974d60
test dx, dx
je 0x62974f4a
mov edx, dword [ebp - 0x1e4]
mov eax, dword [ebp - 0x1e8]
mov ecx, edx
sub ecx, eax
movzx ebx, word [ebp - 0x210]
sar ecx, 1
cmp ebx, ecx
jbe 0x62974d92
mov eax, ebx
sub eax, ecx
lea ecx, [ebp - 0x1e8]
mov dword [esp], eax
call method.std::vector_unsigned_short__std::allocator_unsigned_short___._M_default_append_unsigned_int_
push esi
jmp 0x62974da3
jae 0x62974da3
lea ecx, [ebx + ebx]
add eax, ecx
cmp edx, eax
je 0x62974da3
mov dword [ebp - 0x1e4], eax
mov esi, dword [ebp - 0x1f0]
mov eax, dword [ebp - 0x1f4]
mov edx, esi
sub edx, eax
sar edx, 2
imul edx, edx, 0xaaaaaaab
cmp ebx, edx
jbe 0x62974dd3
sub ebx, edx
lea ecx, [ebp - 0x1f4]
mov dword [esp], ebx
call method.std::vector_std::vector_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo_____std::allocator_std::vector_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo_______._M_default_append_unsigned_int_
push ecx
jmp 0x62974df4
jae 0x62974df4
imul ebx, ebx, 0xc
add ebx, eax
cmp esi, ebx
je 0x62974df4
mov edi, ebx
mov eax, dword [edi]
add edi, 0xc
call method.std::_Vector_base_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo___._M_deallocate_OpenMPT::STPLoopInfo__unsigned_int___clone_.isra.0_
cmp esi, edi
jne 0x62974de0
mov dword [ebp - 0x1f0], ebx
mov eax, dword [ebp - 0x208]
lea ebx, [eax - 1]
imul ebx, ebx, 0xc
add ebx, dword [ebp - 0x1f4]
mov eax, dword [ebx]
cmp eax, dword [ebx + 4]
je 0x62974e10
mov dword [ebx + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
movzx esi, ax
mov word [ebp - 0x20c], ax
mov ecx, dword [ebp + 8]
lea eax, [esi*8]
mov dword [esp], eax
call fcn.629c8e18
test al, al
push edx
jne 0x62974e4c
lea ecx, [ebp - 0x1dc]
call fcn.62925dc8
jmp 0x62975f15
mov edx, dword [ebx]
mov eax, dword [ebx + 8]
sub eax, edx
sar eax, 2
imul eax, eax, 0xaaaaaaab
cmp esi, eax
jbe 0x62974eb4
mov eax, dword [ebx + 4]
sub eax, edx
imul edi, esi, 0xc
mov dword [ebp - 0x214], eax
test esi, esi
je 0x62974e7e
mov dword [esp], edi
call sym.operator_new_unsigned_int_
mov esi, eax
jmp 0x62974e80
xor esi, esi
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
sub eax, edx
test eax, eax
jle 0x62974e9b
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call sym._memmove
mov eax, dword [ebx]
add edi, esi
call method.std::_Vector_base_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo___._M_deallocate_OpenMPT::STPLoopInfo__unsigned_int___clone_.isra.0_
mov eax, dword [ebp - 0x214]
add eax, esi
mov dword [ebx], esi
mov dword [ebx + 4], eax
mov dword [ebx + 8], edi
cmp word [ebp - 0x20c], 0
mov dword [ebp - 0x1ac], 0
jne 0x62974f0b
imul esi, dword [ebp - 0x208], 0x68
add esi, dword [ebp - 0x200]
test byte [esi + 0x7643e], 2
je 0x62974f4a
mov edx, dword [esi + 0x76420]
mov eax, dword [esi + 0x76424]
sub eax, edx
mov ecx, ebx
mov dword [ebp - 0x1b0], eax
lea eax, [ebp - 0x1b4]
mov dword [esp], eax
mov dword [ebp - 0x1b4], edx
call method.std::vector_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo___.push_back_OpenMPT::STPLoopInfo_const_
push eax
jmp 0x62974f4a
xor esi, esi
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [ebp - 0x1b4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [ebp - 0x1b0], eax
lea eax, [ebp - 0x1b4]
mov dword [esp], eax
mov ecx, ebx
call method.std::vector_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo___.push_back_OpenMPT::STPLoopInfo_const_
inc esi
push eax
cmp si, word [ebp - 0x20c]
jne 0x62974f0d
lea ecx, [ebp - 0x1dc]
call fcn.62925dc8
inc word [ebp - 0x20e]
jmp 0x62974863
cmp word [ebp - 0xe0], 0
mov word [ebp - 0x224], pe_nt_image_headers32
jne 0x62974f86
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x224], ax
movzx eax, byte [ebp - 0xdd]
cmp word [ebp - 0xe0], 0
mov word [ebp - 0x228], ax
je 0x62975078
mov eax, dword [ebp + 8]
mov word [ebp - 0x20e], 4
xor esi, esi
mov ebx, dword [eax + 8]
cmp word [ebp - 0x224], si
je 0x6297504d
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
inc ax
je 0x6297504d
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x228], ax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
cmp ax, 0x7f
mov word [ebp - 0x20e], ax
ja 0x62975f15
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753bc]
cmp ax, word [ebp - 0x20e]
jae 0x6297501a
mov ax, word [ebp - 0x20e]
mov edi, dword [ebp - 0x200]
mov ecx, dword [ebp + 8]
movzx edx, word [ebp - 0x228]
mov word [edi + 0x753bc], ax
movzx eax, word [ebp - 0x20e]
imul eax, edx
shl eax, 2
mov dword [esp], eax
call fcn.62924a9c
inc esi
push edi
jmp 0x62974fb3
mov eax, dword [ebp + 8]
cmp ebx, dword [eax + 8]
jbe 0x62975073
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov eax, dword [ecx]
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [eax + 0x20]
push esi
test al, al
push esi
je 0x62975081
mov eax, dword [ebp + 8]
mov dword [eax + 8], ebx
jmp 0x62975081
mov word [ebp - 0x20e], 4
mov eax, dword [ebp - 0x200]
movzx ebx, word [eax + 0x753bc]
test ebx, ebx
je 0x629750ce
lea eax, [ebx + ebx*8]
mov dword [esp], eax
call sym.operator_new_unsigned_int_
mov dword [ebp - 0x218], eax
mov byte [eax], 0
mov byte [eax + 1], 0
mov byte [eax + 2], 0
mov byte [eax + 3], 0
mov byte [eax + 4], 0
mov byte [eax + 5], 0
mov byte [eax + 6], 0
mov byte [eax + 7], 0
mov byte [eax + 8], 0
add eax, 9
dec ebx
jne 0x629750a3
jmp 0x629750d8
mov dword [ebp - 0x218], 0
movzx eax, word [ebp - 0x5a]
mov word [ebp - 0x234], 0
xchg al, ah
mov byte [ebp - 0x214], 0
mov word [ebp - 0x232], ax
mov edi, dword [ebp - 0x234]
cmp word [ebp - 0x224], di
je 0x62975a40
cmp word [ebp - 0xe0], 0
je 0x62975150
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
movzx esi, ax
cmp si, 0xffff
je 0x62975a40
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x228], ax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x20e], ax
jmp 0x62975157
movzx esi, word [ebp - 0x234]
movzx ebx, word [ebp - 0x20e]
movzx eax, word [ebp - 0x228]
imul ebx, eax
shl ebx, 2
mov ecx, dword [ebp + 8]
mov dword [esp], ebx
call fcn.629c8e18
test al, al
push ecx
je 0x62975a40
test byte [ebp + 0xc], 1
je 0x629751ea
movzx eax, word [ebp - 0x228]
mov dword [ebp - 0x238], eax
mov eax, dword [ebp - 0x200]
mov dword [esp], esi
lea ecx, [eax + 0x763f8]
mov eax, dword [ebp - 0x238]
mov dword [esp + 4], eax
call method.OpenMPT::CPatternContainer.Insert_unsigned_short__unsigned_int_
push edx
mov byte [ebp - 0x222], al
push edx
test al, al
je 0x629751ea
movzx eax, word [ebp - 0x20e]
shl esi, 6
mov dword [ebp - 0x21c], 0
lea eax, [eax + eax*8]
mov dword [ebp - 0x240], esi
add eax, dword [ebp - 0x218]
mov dword [ebp - 0x244], eax
jmp 0x62975273
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call fcn.62924a9c
push eax
jmp 0x62975a34
mov eax, dword [ebp - 0x200]
mov esi, dword [ebp - 0x240]
add esi, dword [eax + 0x763f8]
mov ecx, esi
call method.OpenMPT::CPattern.GetNumChannels___const
mov ecx, esi
call method.OpenMPT::CPattern.GetNumChannels___const
mov dl, byte [ebp - 0x232]
and edx, 3
mov ebx, dword [esi]
movzx eax, ax
cmp dl, 2
je 0x6297528a
cmp dl, 3
je 0x6297529e
mov byte [ebp - 0x220], 0
dec dl
jne 0x6297524c
test byte [ebp - 0x21c], 3
sete byte [ebp - 0x220]
imul eax, dword [ebp - 0x21c]
imul eax, eax, 6
mov esi, dword [ebp - 0x218]
add ebx, eax
mov byte [ebp - 0x22c], 0
cmp dword [ebp - 0x244], esi
jne 0x629752b3
inc dword [ebp - 0x21c]
mov edi, dword [ebp - 0x21c]
cmp dword [ebp - 0x238], edi
ja 0x629751fb
jmp 0x62975a34
mov dl, byte [ebp - 0x21c]
and edx, 1
xor edx, 1
mov byte [ebp - 0x220], dl
jmp 0x6297524c
mov edx, dword [ebp - 0x21c]
and edx, 3
cmp edx, 3
setne byte [ebp - 0x220]
jmp 0x6297524c
lea eax, [ebp - 0x14c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadArrayIhLj4EN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileC
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x20c], eax
mov edx, dword [ebp - 0x20c]
shr edx, 0x10
mov dword [ebp - 0x230], edx
mov edx, dword [ebp - 0x20c]
shr edx, 0x18
mov dword [ebp - 0x208], edx
mov dl, byte [ebp - 0x20c]
mov byte [ebx + 1], dl
mov cl, byte [ebp - 0x208]
mov edx, dword [ebp - 0x20c]
mov byte [ebx + 5], cl
movzx eax, ah
test dh, dh
je 0x62975321
add eax, 0x19
mov ecx, 9
mov byte [ebx], al
mov edi, esi
xor eax, eax
rep stosb byte es:[edi], al
mov al, byte [ebp - 0x208]
mov ecx, dword [ebp - 0x208]
shr ecx, 4
and eax, 0xf
mov byte [ebp - 0x239], al
mov eax, dword [ebp - 0x208]
and eax, 0xf
mov dl, cl
mov edi, eax
sub edx, eax
sub edi, ecx
mov al, dl
test edi, edi
jle 0x62975355
mov eax, edi
shl eax, 4
mov dl, byte [ebp - 0x230]
and edx, 0xfffffff0
cmp dl, 0xf0
jne 0x6297540b
mov ecx, dword [ebp - 0x230]
shl ecx, 8
and cx, 0xf00
or cx, word [ebp - 0x208]
je case.0x6297541f.21
movsx eax, cx
call method.OpenMPT.ConvertTempo_unsigned_short_
mov dword [ebp - 0x204], 0
mov dword [ebp - 0x208], eax
fild qword [ebp - 0x208]
fdiv dword [0x62b1c610]
fstp qword [esp]
call sym._round
fld dword [0x62b1c620]
fxch st(1)
fcom st(1)
fnstsw ax
fstp st(1)
sahf
mov al, 0xff
jae 0x629753fd
fldz
fcomp st(1)
fnstsw ax
sahf
mov al, 0
jae 0x62975401
fnstcw word [ebp - 0x1fa]
mov ax, word [ebp - 0x1fa]
or ah, 0xc
mov word [ebp - 0x1fc], ax
fldcw word [ebp - 0x1fc]
fistp word [ebp - 0x208]
fldcw word [ebp - 0x1fa]
mov eax, dword [ebp - 0x208]
jmp 0x62975403
fstp st(0)
jmp 0x62975403
fstp st(0)
mov byte [ebx + 5], al
jmp 0x629758fd
cmp byte [ebp - 0x230], 0x4f
ja case.0x6297541f.21
movzx edx, byte [ebp - 0x230]
jmp dword [edx*4 + 0x62b1c4cc]
mov byte [ebp - 0x214], al
jmp case.0x6297541f.21
cmp byte [ebp - 0x208], 0
je case.0x6297541f.21
mov byte [ebx + 3], 1
jmp case.0x6297541f.21
mov byte [ebx + 3], 2
jmp case.0x6297541f.21
mov byte [ebx + 3], 3
jmp case.0x6297541f.21
mov al, byte [ebx + 5]
cmp al, 0xf
jbe 0x62975462
mov al, 0xf
or eax, 0x10
jmp 0x62975473
mov al, byte [ebx + 5]
cmp al, 0xf
jbe 0x62975470
mov al, 0xf
or eax, 0x20
mov byte [esi], al
mov byte [esi + 1], 0
mov byte [esi + 2], 0
mov byte [esi + 7], 0
jmp case.0x6297541f.21
mov al, byte [ebp - 0x208]
mov byte [esi], 0
mov byte [esi + 1], al
jmp 0x62975479
mov al, byte [ebp - 0x208]
mov byte [esi], 0
mov byte [esi + 1], 0
mov byte [esi + 2], al
jmp 0x6297547d
mov byte [ebx + 3], 0x17
mov byte [ebp - 0x214], 0
jmp case.0x6297541f.21
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x629754c3
mov al, 0xf
or eax, 0x10
jmp 0x629754d8
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x629754d5
mov al, 0xf
or eax, 0x20
mov byte [ebx + 5], al
jmp case.0x6297541f.21
mov byte [esi + 3], al
jmp case.0x6297541f.21
mov byte [ebx + 2], 1
mov al, byte [ebp - 0x208]
jmp 0x6297550d
test edi, edi
jns 0x62975501
mov byte [ebx + 2], 4
and eax, 0xf
jmp 0x6297550d
je 0x62975510
movzx eax, al
sar eax, 4
mov byte [ebx + 2], 3
mov byte [ebx + 4], al
mov byte [esi + 3], 0
jmp case.0x6297541f.21
cmp byte [ebp - 0x208], 0
sete byte [ebx + 5]
mov byte [ebx + 3], 0x13
jmp case.0x6297541f.21
mov al, byte [ebp - 0x239]
mov byte [ebx + 3], 0x10
mov byte [ebx + 5], cl
mov byte [ebp - 0x232], al
jmp case.0x6297541f.21
mov al, byte [ebp - 0x208]
mov byte [esi + 5], 0
mov byte [esi + 4], al
jmp case.0x6297541f.21
cmp byte [ebp - 0x239], 0
je 0x6297556e
mov al, byte [ebp - 0x208]
mov byte [esi + 6], al
jmp case.0x6297541f.21
mov byte [esi + 6], 0
jmp case.0x6297541f.21
mov byte [ebx + 3], 0xe
jmp case.0x6297541f.21
mov al, byte [ebp - 0x208]
mov byte [esi], 0
mov byte [esi + 1], 0
mov byte [esi + 2], 0
mov byte [esi + 7], al
mov byte [esi + 8], 0
jmp case.0x6297541f.21
mov byte [ebx + 3], 0xc
jmp case.0x6297541f.21
cmp byte [ebp - 0x20c], 0
je case.0x6297541f.21
mov eax, dword [ebp - 0x1f4]
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
movzx edx, byte [ebp - 0x20c]
cmp edx, ecx
ja case.0x6297541f.21
dec edx
lea ecx, [ebp - 0x1b4]
imul edx, edx, 0xc
add edx, eax
mov al, byte [ebp - 0x208]
dec eax
mov byte [ebx + 5], al
movzx eax, al
mov dword [ebp - 0x20c], eax
mov eax, dword [edx + 4]
sub eax, dword [edx]
sar eax, 2
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x208], eax
mov edi, eax
call method.OpenMPT::ModSample.ModSample_OpenMPT::MODTYPE___clone_.constprop.0_
cmp dword [ebp - 0x208], 8
jbe 0x62975621
mov edi, 9
cmp dword [ebp - 0x20c], edi
jae case.0x6297541f.21
mov al, byte [ebx + 5]
mov byte [ebx + 2], 0xf
mov byte [ebx + 4], al
jmp case.0x6297541f.21
cmp byte [ebp - 0x20c], 0
je case.0x6297541f.21
mov eax, dword [ebp - 0x1f4]
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
movzx edx, byte [ebp - 0x20c]
cmp edx, ecx
ja case.0x6297541f.21
dec edx
imul edx, edx, 0xc
add edx, eax
mov al, byte [ebp - 0x208]
dec eax
mov byte [ebx + 5], al
mov ecx, dword [edx]
mov edx, dword [edx + 4]
sub edx, ecx
sar edx, 2
imul edx, edx, 0xaaaaaaab
movzx eax, al
cmp eax, edx
jae case.0x6297541f.21
imul eax, eax, 0xc
cmp word [ecx + eax + 8], 0
jne 0x629756d2
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, 0xf9e
ja 0x629756d2
mov edi, dword [ebp - 0x200]
inc eax
mov word [edi + 0x753be], ax
movzx edx, byte [ebx + 5]
imul edx, edx, 0xc
mov word [ecx + edx + 8], ax
movzx eax, byte [ebx + 5]
imul eax, eax, 0xc
mov eax, dword [ecx + eax + 8]
jmp 0x629757b4
cmp byte [ebp - 0x20c], 0
je case.0x6297541f.21
mov eax, dword [ebp - 0x1f4]
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
movzx edx, byte [ebp - 0x20c]
cmp edx, ecx
ja case.0x6297541f.21
dec edx
lea ecx, [ebp - 0x14c]
imul edx, edx, 0xc
add edx, eax
mov al, byte [ebp - 0x208]
dec eax
mov byte [ebx + 5], al
movzx eax, al
mov dword [ebp - 0x20c], eax
mov eax, dword [edx + 4]
sub eax, dword [edx]
sar eax, 2
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x208], eax
mov edi, eax
call method.OpenMPT::ModSample.ModSample_OpenMPT::MODTYPE___clone_.constprop.0_
cmp dword [ebp - 0x208], 8
jbe 0x6297575d
mov edi, 9
cmp dword [ebp - 0x20c], edi
jae 0x6297576f
mov al, byte [ebx + 5]
mov byte [ebx + 2], 0xf
mov byte [ebx + 4], al
movzx eax, byte [ebx + 1]
mov edx, dword [ebp - 0x1e8]
cmp word [edx + eax*2 - 2], 0
jne 0x629757ab
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, 0xf9e
ja 0x629757ab
mov edi, dword [ebp - 0x200]
inc eax
mov word [edi + 0x753be], ax
movzx ecx, byte [ebx + 1]
mov word [edx + ecx*2 - 2], ax
movzx eax, byte [ebx + 1]
mov ax, word [edx + eax*2 - 2]
mov byte [ebx + 1], al
jmp case.0x6297541f.21
cmp byte [ebp - 0x20c], 0
je case.0x6297541f.21
mov eax, dword [ebp - 0x1f4]
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
movzx edx, byte [ebp - 0x20c]
cmp edx, ecx
ja case.0x6297541f.21
dec edx
imul edx, edx, 0xc
add edx, eax
mov al, byte [ebp - 0x208]
dec eax
mov byte [ebx + 5], al
mov ecx, dword [edx]
mov edx, dword [edx + 4]
sub edx, ecx
sar edx, 2
imul edx, edx, 0xaaaaaaab
movzx eax, al
cmp eax, edx
jae case.0x6297541f.21
imul eax, eax, 0xc
cmp word [ecx + eax + 0xa], 0
jne 0x62975852
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, 0xf9e
ja 0x62975852
mov edi, dword [ebp - 0x200]
inc eax
mov word [edi + 0x753be], ax
movzx edx, byte [ebx + 5]
imul edx, edx, 0xc
mov word [ecx + edx + 0xa], ax
movzx eax, byte [ebx + 5]
imul eax, eax, 0xc
mov ax, word [ecx + eax + 0xa]
jmp 0x629757b4
test edi, edi
jns 0x62975876
and eax, 0xf
mov byte [ebx + 3], 0x13
or eax, 0xffffffb0
jmp 0x629754d8
je case.0x6297541f.21
shr al, 4
mov byte [ebx + 3], 0x13
or eax, 0xffffffa0
jmp 0x629754d8
test byte [ebp - 0x208], 0xf0
je 0x62975899
mov byte [esi + 3], cl
jmp case.0x6297541f.21
mov al, byte [ebp - 0x208]
mov byte [ebx + 3], 0x13
or eax, 0xffffffc0
jmp 0x629754d8
mov al, byte [ebx + 5]
cmp al, 0xf
jbe 0x629758b4
mov al, 0xf
or eax, 0xffffffd0
jmp 0x629758c5
mov al, byte [ebx + 5]
cmp al, 0xf
jbe 0x629758c2
mov al, 0xf
or eax, 0xffffff90
mov byte [ebx + 3], 0x13
jmp 0x629754d8
mov byte [ebx + 3], 0xa
jmp case.0x6297541f.21
mov al, byte [ebp - 0x208]
and eax, 0x70
cmp al, 0x60
jne case.0x6297541f.21
mov byte [ebx + 3], 0x13
jmp case.0x6297541f.21
cmp byte [ebp - 0x208], 0x1f
ja 0x629758fd
mov byte [ebx + 3], 0x10
mov byte [ebp - 0x232], 0
jmp case.0x6297541f.21
mov byte [ebx + 3], 0x11
mov al, byte [esi + 3]
xor edx, edx
test al, al
je 0x62975930
cmp byte [ebx + 2], 0
jne 0x62975930
test al, 0xf0
je 0x62975923
movzx edx, al
sar edx, 4
mov byte [ebx + 2], 5
mov byte [ebx + 4], dl
jmp 0x6297592a
mov byte [ebx + 2], 6
mov byte [ebx + 4], al
mov dl, byte [ebp - 0x222]
cmp byte [ebx + 3], 0
jne 0x62975a29
mov cl, byte [esi + 1]
test cl, cl
je 0x62975947
mov byte [ebx + 3], 2
jmp 0x6297597e
mov cl, byte [esi + 2]
test cl, cl
je 0x62975954
mov byte [ebx + 3], 3
jmp 0x6297597e
mov cl, byte [esi]
test cl, cl
je 0x62975960
mov byte [ebx + 3], 0x13
jmp 0x6297597e
mov cl, byte [esi + 7]
test cl, cl
je 0x62975970
mov byte [ebx + 3], 4
mov byte [esi + 8], cl
jmp 0x6297597e
mov cl, byte [esi + 4]
test cl, cl
je 0x62975986
mov byte [ebx + 3], 5
mov byte [esi + 5], cl
mov byte [ebx + 5], cl
jmp 0x62975a29
test al, al
setne cl
xor edx, 1
test cl, dl
je 0x629759a8
mov byte [ebx + 3], 0xb
test al, 0xf
je 0x6297599f
or eax, 0xfffffff0
jmp 0x629759b3
test al, 0xf0
je 0x629759b3
or eax, 0xf
jmp 0x629759b3
mov al, byte [esi + 6]
test al, al
je 0x629759b8
mov byte [ebx + 3], 8
mov byte [ebx + 5], al
jmp 0x62975a29
cmp byte [ebp - 0x220], 0
je 0x629759cb
mov byte [ebx + 3], 0x14
mov byte [ebx + 5], 0x61
jmp 0x62975a22
mov al, byte [ebp - 0x22c]
xor eax, 1
cmp byte [ebp - 0x214], 0
setne dl
and al, dl
je 0x62975a22
test byte [ebp - 0x214], 0xf
mov byte [ebx + 3], 0x18
je 0x629759fa
mov dl, byte [ebp - 0x214]
or edx, 0xfffffff0
jmp 0x62975a1d
test byte [ebp - 0x214], 0xf0
jne 0x62975a14
mov cl, byte [ebp - 0x214]
mov byte [ebx + 5], cl
mov byte [ebp - 0x22c], al
jmp 0x62975a29
mov dl, byte [ebp - 0x214]
or edx, 0xf
mov byte [ebx + 5], dl
jmp 0x62975a0c
mov byte [ebp - 0x220], 0
add ebx, 6
add esi, 9
jmp 0x62975265
inc word [ebp - 0x234]
jmp 0x629750f5
mov eax, dword [ebp - 0x200]
mov edi, dword [ebp - 0x200]
movzx ecx, word [eax + 0x753bc]
mov eax, 0x100
cdq
idiv ecx
mov dword [edi + 0x753e4], eax
mov ecx, edi
mov dword [esp], 1
call method.OpenMPT::CSoundFile.SetupMODPanning_bool_
cmp word [ebp - 0xe0], 0
push eax
je 0x62975ad6
mov dword [esp], 2
mov ecx, dword [ebp + 8]
call fcn.629c8e18
test al, al
push edi
je 0x62975ac6
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
inc ax
je 0x62975ac6
mov dword [esp], 2
mov ecx, dword [ebp + 8]
call fcn.62924a9c
mov eax, dword [ebp + 8]
push esi
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.62924a9c
push ebx
jmp 0x62975a7a
mov dword [esp], 0x22
mov ecx, dword [ebp + 8]
call fcn.62924a9c
push ecx
test byte [ebp + 0xc], 2
je 0x62975efc
mov word [ebp - 0x20e], 1
mov di, word [ebp - 0x20e]
cmp word [ebp - 0x210], di
jb 0x62975efc
movzx eax, di
mov dword [ebp - 0x20c], eax
mov edi, dword [ebp - 0x200]
imul eax, eax, 0x68
cmp dword [edi + eax + 0x7641c], 0
je 0x62975ef0
lea eax, [edi + eax + 0x7641c]
lea ecx, [ebp - 0x14c]
mov dword [ebp - 0x208], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x208]
mov dword [esp], eax
mov dword [ebp - 0x14c], 0x108
call sym.__ZNK7OpenMPT8SampleIO10ReadSampleERNS_9ModSampleERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataEN
push edx
mov eax, dword [ebp - 0x1f0]
push edx
mov edx, dword [ebp - 0x1f4]
sub eax, edx
sar eax, 2
imul eax, eax, 0xaaaaaaab
movzx ecx, word [ebp - 0x20e]
cmp ecx, eax
ja 0x62975ef0
mov eax, dword [ebp - 0x20c]
dec eax
mov dword [ebp - 0x228], eax
imul eax, eax, 0xc
imul ecx, dword [ebp - 0x20c], 0x68
mov dword [ebp - 0x22c], eax
mov eax, dword [ebp - 0x200]
add eax, ecx
cmp dword [eax + 0x76430], 0
je 0x62975e23
mov edi, dword [eax + 0x7641c]
mov dword [ebp - 0x21c], edi
test edi, edi
je 0x62975e23
mov edi, dword [ebp - 0x22c]
lea ebx, [edx + edi]
mov edx, dword [ebx + 4]
sub edx, dword [ebx]
sar edx, 2
imul edx, edx, 0xaaaaaaab
cmp edx, 1
jbe 0x62975e23
mov edx, dword [eax + 0x76420]
mov edi, dword [ebp - 0x208]
mov dword [ebp - 0x148], edx
mov edx, dword [eax + 0x76424]
mov dword [ebp - 0x144], edx
mov edx, dword [eax + 0x76428]
mov dword [ebp - 0x140], edx
mov edx, dword [eax + 0x7642c]
mov dword [ebp - 0x13c], edx
mov edx, dword [eax + 0x76434]
mov dword [ebp - 0x134], edx
mov edx, dword [eax + 0x76438]
mov dword [ebp - 0x130], edx
mov edx, dword [eax + 0x7643c]
mov word [ebp - 0x12c], dx
mov dx, word [edi + 0x22]
mov edi, dword [ebp - 0x200]
mov word [ebp - 0x12a], dx
mov dl, byte [eax + 0x76446]
lea ecx, [edi + ecx + 0x76430]
lea edi, [ebp - 0x121]
mov esi, dword [ecx + 0x10]
mov dword [ebp - 0x128], esi
lea esi, [eax + 0x76447]
mov ecx, dword [ecx + 0x14]
mov byte [ebp - 0x122], dl
mov word [ebp - 0x124], cx
mov ecx, 0x16
rep movsb byte es:[edi], byte [esi]
lea esi, [eax + 0x76460]
lea edi, [ebp - 0x108]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x138], 0
mov dword [ebp - 0x14c], 0
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
sub eax, edx
sar eax, 2
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x220], edx
xor eax, eax
mov dword [ebp - 0x214], 0
mov esi, dword [ebp - 0x214]
cmp dword [ebp - 0x230], esi
jne 0x62975cf7
test cl, cl
je 0x62975ce9
mov dword [ebp - 0x14c], eax
mov eax, dword [ebp - 0x230]
mov dword [ebp - 0x214], eax
jmp 0x62975d48
mov edi, dword [ebp - 0x220]
mov esi, dword [edi]
cmp esi, dword [ebp - 0x21c]
jae 0x62975d3e
mov edi, dword [ebp - 0x220]
mov edx, dword [ebp - 0x21c]
sub edx, esi
mov edi, dword [edi + 4]
cmp edx, edi
jb 0x62975d3e
mov esi, 0x10000000
sub esi, edi
add dword [ebp - 0x220], 0xc
cmp eax, esi
ja 0x62975d3e
inc dword [ebp - 0x214]
add eax, edi
mov cl, byte [ebp - 0x221]
jmp 0x62975cd1
test cl, cl
je 0x62975d48
mov dword [ebp - 0x14c], eax
lea ecx, [ebp - 0x14c]
call method.OpenMPT::ModSample.AllocateSample__
test eax, eax
je 0x62975e23
imul eax, dword [ebp - 0x20c], 0x68
add eax, dword [ebp - 0x200]
xor edx, edx
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x214], edx
je 0x62975dd5
imul eax, edx, 0xc
mov edi, dword [ebp - 0x21c]
add eax, dword [ebx]
add edi, dword [ebp - 0x138]
mov dword [ebp - 0x220], edi
mov edi, dword [ebp - 0x230]
mov esi, dword [eax]
mov ecx, dword [eax + 4]
add esi, dword [edi + 0x76430]
mov edi, dword [ebp - 0x220]
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 0x21c]
lea ecx, [edx - 1]
mov dword [eax], edi
cmp ecx, 8
ja 0x62975dc9
mov dword [ebp + edx*4 - 0x10c], edi
mov eax, dword [eax + 4]
inc edx
add dword [ebp - 0x21c], eax
jmp 0x62975d7a
mov ecx, dword [ebp - 0x208]
call method.OpenMPT::ModSample.FreeSample__
lea eax, [ebp - 0x14c]
mov ecx, dword [ebp - 0x208]
mov dword [esp], eax
call method.OpenMPT::ModSample.operator_OpenMPT::ModSample_const_
push eax
imul eax, dword [ebp - 0x20c], 0x68
add eax, dword [ebp - 0x200]
mov edx, dword [eax + 0x7641c]
mov dword [eax + 0x76420], 0
mov dword [eax + 0x76424], edx
mov eax, dword [ebp - 0x208]
or word [eax + 0x22], 2
mov eax, dword [ebp - 0x1e8]
mov edi, dword [ebp - 0x228]
movzx eax, word [eax + edi*2]
test ax, ax
je 0x62975e6e
imul eax, eax, 0x68
mov edi, dword [ebp - 0x200]
mov dword [esp + 4], 0
xor ecx, ecx
lea edx, [edi + eax + 0x7641c]
imul eax, dword [ebp - 0x20c], 0x68
mov eax, dword [edi + eax + 0x7641c]
mov dword [esp], eax
mov eax, dword [ebp - 0x208]
call method.OpenMPT.ConvertLoopSlice_OpenMPT::ModSample__OpenMPT::ModSample__unsigned_int__unsigned_int__bool_
mov eax, dword [ebp - 0x22c]
add eax, dword [ebp - 0x1f4]
mov esi, dword [eax + 4]
mov ebx, dword [eax]
cmp esi, ebx
je 0x62975ef0
movzx eax, word [ebx + 8]
test ax, ax
je 0x62975eb7
imul eax, eax, 0x68
mov edi, dword [ebp - 0x200]
mov dword [esp + 4], 1
lea edx, [edi + eax + 0x7641c]
mov eax, dword [ebx + 4]
mov dword [esp], eax
mov eax, dword [ebp - 0x208]
mov ecx, dword [ebx]
call method.OpenMPT.ConvertLoopSlice_OpenMPT::ModSample__OpenMPT::ModSample__unsigned_int__unsigned_int__bool_
movzx eax, word [ebx + 0xa]
test ax, ax
je 0x62975eeb
imul eax, eax, 0x68
mov edi, dword [ebp - 0x200]
mov dword [esp + 4], 0
lea edx, [edi + eax + 0x7641c]
mov eax, dword [ebx + 4]
mov dword [esp], eax
mov eax, dword [ebp - 0x208]
mov ecx, dword [ebx]
call method.OpenMPT.ConvertLoopSlice_OpenMPT::ModSample__OpenMPT::ModSample__unsigned_int__unsigned_int__bool_
add ebx, 0xc
jmp 0x62975e7f
inc word [ebp - 0x20e]
jmp 0x62975ae9
cmp dword [ebp - 0x218], 0
je 0x62975f1c
mov eax, dword [ebp - 0x218]
mov dword [esp], eax
call sym.operator_delete_void_
jmp 0x62975f1c
mov byte [ebp - 0x221], 0
mov eax, dword [ebp - 0x1e8]
test eax, eax
je 0x62975f2e
mov dword [esp], eax
call sym.operator_delete_void_
lea ecx, [ebp - 0x1f4]
call method.std::vector_std::vector_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo_____std::allocator_std::vector_OpenMPT::STPLoopInfo__std::allocator_OpenMPT::STPLoopInfo_______.vector____clone_.isra.0_
jmp 0x62975fa9
mov al, byte [ebp - 0x221]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 8