Function at 0x70107cb0
Capabilities:
Check for software breakpoints
Contain obfuscated stackstrings

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 0x70107cfa
mov byte [ebp - 0x219], 0
jmp 0x70109654
mov ecx, dword [ebp + 8]
mov dword [esp], 0xcc
call fcn.700a905c
push eax
mov eax, ebx
call method.OpenMPT.ValidateHeader_OpenMPT::STPFileHeader_const_
mov byte [ebp - 0x219], al
test al, al
je 0x70109654
cmp dword [ebp + 0xc], 0x40
je 0x70109654
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], 0x702b3f33
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.701f8608
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.7015a7bc
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], 0x702b3f37
mov dword [esp], 0x702b3f34
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 0x70107ea8
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 0x70107ee1
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 0x70107eef
jae 0x70107eef
lea edx, [esi + esi]
add eax, edx
cmp ecx, eax
je 0x70107eef
mov dword [ebx + 4], eax
xor eax, eax
cmp esi, eax
jle 0x70107f25
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 0x70107f1e
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], 0x702b3f38
call method.std.__throw_out_of_range_fmt_char_const__..._
mov word [ecx + eax*2], di
inc eax
jmp 0x70107ef1
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 - 0x20a], 0
mov word [ebp - 0x20c], 0
movzx eax, word [ebp - 0x1c]
xchg al, ah
cmp word [ebp - 0x20a], ax
jae 0x70108671
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 0x701095c0
cmp word [ebp - 0xe0], 0x200
je 0x70107fb6
movzx ebx, word [ebp - 0x1a]
xchg bl, bh
movzx ebx, bx
jmp 0x70107fc4
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.700a905c
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.7015b9f8
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.700aa388
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, si
mov word [ebp - 0x20c], ax
jae 0x70108080
mov word [ebp - 0x20c], si
mov eax, dword [ebp - 0x200]
mov edi, dword [ebp - 0x20c]
mov word [eax + 0x753be], di
mov dword [esp], 1
movzx eax, si
imul ebx, eax, 0x68
mov dword [ebp - 0x204], eax
mov eax, dword [ebp - 0x200]
lea eax, [eax + ebx + 0x7641c]
mov ecx, eax
mov dword [ebp - 0x208], 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 0x70108261
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.700a8958
push eax
mov ecx, ebx
push eax
mov eax, dword [ebp - 0x1b4]
mov dword [esp], eax
call fcn.700a905c
lea ecx, [ebp - 0x1b4]
push eax
call fcn.7015b9c0
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 0x70108166
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.701c710c
mov dword [esp], 1
lea ecx, [ebp - 0x1dc]
call fcn.700a905c
push eax
mov eax, dword [ebp - 0x204]
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.700a8958
jmp 0x701081e9
push edi
mov eax, dword [ebp - 0x1b4]
push edi
mov ecx, ebx
mov dword [esp], eax
call fcn.700a905c
push ecx
lea ecx, [ebp - 0x1b4]
call fcn.7015b9c0
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.701c710c
jmp 0x70108322
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.700a905c
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 - 0x204]
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 0x70108317
mov dword [esp], 1
lea ecx, [ebp - 0x1dc]
call fcn.700a905c
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 0x7010835a
mov dword [esp], 0x14
lea ecx, [ebp - 0x1dc]
call fcn.700a905c
push edi
jmp 0x70108369
lea edi, [ebp - 0x14c]
mov ecx, 5
xor eax, eax
rep stosd dword es:[edi], eax
imul edx, dword [ebp - 0x204], 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 0x70108394
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 - 0x204], 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 0x701083dc
lea ecx, [ebx - 1]
mov dword [edx + 0x76420], ecx
cmp eax, ebx
jbe 0x701083f4
imul eax, dword [ebp - 0x204], 0x68
mov edi, dword [ebp - 0x200]
mov dword [edi + eax + 0x76424], ebx
imul eax, dword [ebp - 0x204], 0x68
add eax, dword [ebp - 0x200]
mov edx, dword [eax + 0x76420]
cmp edx, dword [eax + 0x76424]
jbe 0x70108425
mov dword [eax + 0x76420], 0
mov dword [eax + 0x76424], 0
jmp 0x70108435
jae 0x70108435
mov eax, dword [ebp - 0x208]
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 0x70108467
imul edx, dword [ebp - 0x204], 0x68
movzx eax, byte [ebp - 0x13a]
shl eax, 3
mov edi, dword [ebp - 0x200]
mov byte [edi + edx + 0x76441], al
jmp 0x70108470
test dx, dx
je 0x7010865a
mov edx, dword [ebp - 0x1e4]
mov eax, dword [ebp - 0x1e8]
mov ecx, edx
sub ecx, eax
movzx ebx, word [ebp - 0x20c]
sar ecx, 1
cmp ebx, ecx
jbe 0x701084a2
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 0x701084b3
jae 0x701084b3
lea ecx, [ebx + ebx]
add eax, ecx
cmp edx, eax
je 0x701084b3
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 0x701084e3
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 0x70108504
jae 0x70108504
imul ebx, ebx, 0xc
add ebx, eax
cmp esi, ebx
je 0x70108504
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 0x701084f0
mov dword [ebp - 0x1f0], ebx
mov eax, dword [ebp - 0x204]
lea ebx, [eax - 1]
imul ebx, ebx, 0xc
add ebx, dword [ebp - 0x1f4]
mov eax, dword [ebx]
cmp eax, dword [ebx + 4]
je 0x70108520
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 - 0x208], ax
mov ecx, dword [ebp + 8]
lea eax, [esi*8]
mov dword [esp], eax
call fcn.7015bbf8
test al, al
push edx
jne 0x7010855c
lea ecx, [ebp - 0x1dc]
call fcn.700aa388
jmp 0x701095c0
mov edx, dword [ebx]
mov eax, dword [ebx + 8]
sub eax, edx
sar eax, 2
imul eax, eax, 0xaaaaaaab
cmp esi, eax
jbe 0x701085c4
mov eax, dword [ebx + 4]
sub eax, edx
imul edi, esi, 0xc
mov dword [ebp - 0x210], eax
test esi, esi
je 0x7010858e
mov dword [esp], edi
call sym.operator_new_unsigned_int_
mov esi, eax
jmp 0x70108590
xor esi, esi
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
sub eax, edx
test eax, eax
jle 0x701085ab
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 - 0x210]
add eax, esi
mov dword [ebx], esi
mov dword [ebx + 4], eax
mov dword [ebx + 8], edi
cmp word [ebp - 0x208], 0
mov dword [ebp - 0x1ac], 0
jne 0x7010861b
imul esi, dword [ebp - 0x204], 0x68
add esi, dword [ebp - 0x200]
test byte [esi + 0x7643e], 2
je 0x7010865a
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 0x7010865a
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 - 0x208]
jne 0x7010861d
lea ecx, [ebp - 0x1dc]
call fcn.700aa388
inc word [ebp - 0x20a]
jmp 0x70107f73
cmp word [ebp - 0xe0], 0
mov word [ebp - 0x228], pe_nt_image_headers32
jne 0x70108696
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x228], ax
movzx eax, byte [ebp - 0xdd]
cmp word [ebp - 0xe0], 0
mov word [ebp - 0x220], ax
je 0x70108787
mov eax, dword [ebp + 8]
mov word [ebp - 0x208], 4
xor esi, esi
mov ebx, dword [eax + 8]
cmp word [ebp - 0x228], si
je 0x7010875c
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
inc ax
je 0x7010875c
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x220], ax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
cmp ax, 0x7f
mov word [ebp - 0x208], ax
ja 0x701095c0
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753bc]
cmp ax, word [ebp - 0x208]
jae 0x70108729
mov eax, dword [ebp - 0x208]
mov edi, dword [ebp - 0x200]
mov ecx, dword [ebp + 8]
movzx edx, word [ebp - 0x220]
mov word [edi + 0x753bc], ax
movzx eax, word [ebp - 0x208]
imul eax, edx
shl eax, 2
mov dword [esp], eax
call fcn.700a905c
inc esi
push edi
jmp 0x701086c3
mov eax, dword [ebp + 8]
cmp ebx, dword [eax + 8]
jbe 0x70108782
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 0x70108790
mov eax, dword [ebp + 8]
mov dword [eax + 8], ebx
jmp 0x70108790
mov word [ebp - 0x208], 4
mov eax, dword [ebp - 0x200]
movzx ebx, word [eax + 0x753bc]
test ebx, ebx
je 0x701087dd
lea eax, [ebx + ebx*8]
mov dword [esp], eax
call sym.operator_new_unsigned_int_
mov dword [ebp - 0x210], 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 0x701087b2
jmp 0x701087e7
mov dword [ebp - 0x210], 0
movzx eax, word [ebp - 0x5a]
mov word [ebp - 0x232], 0
xchg al, ah
mov byte [ebp - 0x20a], 0
mov word [ebp - 0x21c], ax
mov di, word [ebp - 0x232]
cmp word [ebp - 0x228], di
je 0x701090eb
cmp word [ebp - 0xe0], 0
je 0x70108860
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
movzx esi, ax
cmp si, 0xffff
je 0x701090eb
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x220], ax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov word [ebp - 0x208], ax
jmp 0x70108867
movzx esi, word [ebp - 0x232]
movzx ebx, word [ebp - 0x208]
movzx eax, word [ebp - 0x220]
imul ebx, eax
shl ebx, 2
mov ecx, dword [ebp + 8]
mov dword [esp], ebx
call fcn.7015bbf8
test al, al
push ecx
je 0x701090eb
test byte [ebp + 0xc], 1
je 0x701088fa
movzx eax, word [ebp - 0x220]
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 - 0x21a], al
push edx
test al, al
je 0x701088fa
movzx eax, word [ebp - 0x208]
shl esi, 6
mov dword [ebp - 0x214], 0
lea eax, [eax + eax*8]
mov dword [ebp - 0x23c], esi
add eax, dword [ebp - 0x210]
mov dword [ebp - 0x240], eax
jmp 0x7010898f
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call fcn.700a905c
push eax
jmp 0x701090df
mov eax, dword [ebp - 0x200]
mov esi, dword [ebp - 0x23c]
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 - 0x21c]
and edx, 3
mov ebx, dword [esi]
movzx eax, ax
cmp dl, 2
je 0x701089a6
cmp dl, 3
je 0x701089ba
mov byte [ebp - 0x218], 0
dec dl
jne 0x7010895c
test byte [ebp - 0x214], 3
sete byte [ebp - 0x218]
imul eax, dword [ebp - 0x214]
imul eax, eax, 6
add ebx, eax
mov eax, dword [ebp - 0x210]
mov dword [ebp - 0x204], eax
mov byte [ebp - 0x224], 0
mov edi, dword [ebp - 0x204]
cmp dword [ebp - 0x240], edi
jne 0x701089cf
inc dword [ebp - 0x214]
mov edi, dword [ebp - 0x214]
cmp dword [ebp - 0x238], edi
ja 0x7010890b
jmp 0x701090df
mov dl, byte [ebp - 0x214]
and edx, 1
xor edx, 1
mov byte [ebp - 0x218], dl
jmp 0x7010895c
mov edx, dword [ebp - 0x214]
and edx, 3
cmp edx, 3
setne byte [ebp - 0x218]
jmp 0x7010895c
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 esi, dword [ebp - 0x14c]
mov eax, esi
mov edi, esi
mov edx, esi
mov ecx, esi
movzx eax, ah
shr edi, 0x10
mov byte [ebx + 1], cl
shr edx, 0x18
mov dword [ebp - 0x230], edi
mov byte [ebx], al
mov byte [ebx + 5], dl
test al, al
je 0x70108a21
add eax, 0x19
mov ecx, 9
mov byte [ebx], al
mov edi, dword [ebp - 0x204]
xor eax, eax
rep stosb byte es:[edi], al
mov al, byte [ebp - 0x230]
and eax, 0xfffffff0
cmp al, 0xf0
jne 0x70108acf
mov eax, dword [ebp - 0x230]
shl eax, 8
and ax, 0xf00
or ax, dx
je case.0x70108ae8.21
cwde
call method.OpenMPT.ConvertTempo_unsigned_short_
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x230], eax
fild qword [ebp - 0x230]
fdiv dword [0x702b40c8]
fstp qword [esp]
call sym._round
fld dword [0x702b40d8]
fxch st(1)
fcom st(1)
fnstsw ax
fstp st(1)
sahf
mov al, 0xff
jae 0x70108ac1
fldz
fcomp st(1)
fnstsw ax
sahf
mov al, 0
jae 0x70108ac5
fnstcw word [ebp - 0x1fa]
mov ax, word [ebp - 0x1fa]
or ah, 0xc
mov word [ebp - 0x1fc], ax
fldcw word [ebp - 0x1fc]
fistp word [ebp - 0x230]
fldcw word [ebp - 0x1fa]
mov eax, dword [ebp - 0x230]
jmp 0x70108ac7
fstp st(0)
jmp 0x70108ac7
fstp st(0)
mov byte [ebx + 5], al
jmp 0x70108f74
mov al, dl
rol al, 4
cmp byte [ebp - 0x230], 0x4f
ja case.0x70108ae8.21
movzx ecx, byte [ebp - 0x230]
jmp dword [ecx*4 + 0x702b3f84]
test dl, dl
setne byte [ebx + 3]
jmp 0x70108f7e
mov byte [ebx + 3], 2
jmp 0x70108f7e
mov byte [ebx + 3], 3
jmp 0x70108f7e
mov al, byte [ebx + 5]
cmp al, 0xf
jbe 0x70108b15
mov al, 0xf
or eax, 0x10
jmp 0x70108b26
mov al, byte [ebx + 5]
cmp al, 0xf
jbe 0x70108b23
mov al, 0xf
or eax, 0x20
mov edi, dword [ebp - 0x204]
mov byte [edi], al
mov byte [edi + 1], 0
mov eax, edi
mov byte [eax + 2], 0
mov byte [eax + 7], 0
jmp case.0x70108ae8.21
mov eax, dword [ebp - 0x204]
mov byte [eax], 0
mov byte [eax + 1], dl
jmp 0x70108b34
mov eax, dword [ebp - 0x204]
mov byte [eax], 0
mov byte [eax + 1], 0
mov byte [eax + 2], dl
jmp 0x70108b38
mov byte [ebx + 3], 0x17
mov byte [ebp - 0x20a], 0
jmp 0x70108f7e
mov byte [ebx + 3], 0
mov byte [ebp - 0x20a], al
jmp 0x70108f7e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x70108b8d
mov al, 0xf
or eax, 0x10
jmp 0x70108ba2
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x70108b9f
mov al, 0xf
or eax, 0x20
mov byte [ebx + 5], al
jmp 0x70108f7e
mov edi, dword [ebp - 0x204]
mov byte [edi + 3], al
jmp case.0x70108ae8.21
mov byte [ebx + 2], 1
jmp 0x70108bd4
test dl, 0xf0
je 0x70108bcc
shr edx, 4
mov byte [ebx + 2], 4
jmp 0x70108bd4
test dl, dl
je 0x70108bd7
mov byte [ebx + 2], 3
mov byte [ebx + 4], dl
mov eax, dword [ebp - 0x204]
mov byte [eax + 3], 0
jmp case.0x70108ae8.21
test dl, dl
mov byte [ebx + 3], 0x13
sete byte [ebx + 5]
jmp 0x70108f7e
mov al, dl
mov byte [ebx + 3], 0x10
shr edx, 4
and eax, 0xf
mov byte [ebp - 0x21c], al
jmp 0x70108f1f
mov eax, dword [ebp - 0x204]
mov byte [eax + 4], dl
mov byte [eax + 5], 0
jmp case.0x70108ae8.21
mov al, dl
and al, 0xf
je 0x70108c26
mov al, dl
mov edi, dword [ebp - 0x204]
mov byte [edi + 6], al
jmp case.0x70108ae8.21
mov byte [ebx + 3], 0xe
jmp 0x70108f7e
mov eax, dword [ebp - 0x204]
mov byte [eax], 0
mov byte [eax + 1], 0
mov byte [eax + 2], 0
mov byte [eax + 7], dl
mov byte [eax + 8], 0
jmp case.0x70108ae8.21
mov byte [ebx + 3], 0xc
jmp 0x70108f7e
mov eax, esi
test al, al
je case.0x70108ae8.21
mov ecx, esi
mov eax, dword [ebp - 0x1f4]
movzx esi, cl
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp esi, ecx
ja case.0x70108ae8.21
dec esi
dec edx
imul ecx, esi, 0xc
add ecx, eax
mov byte [ebx + 5], dl
movzx eax, dl
mov esi, dword [ecx + 4]
mov dword [ebp - 0x230], eax
sub esi, dword [ecx]
lea ecx, [ebp - 0x1b4]
sar esi, 2
imul esi, esi, 0xaaaaaaab
mov edi, esi
call method.OpenMPT::ModSample.ModSample_OpenMPT::MODTYPE___clone_.constprop.0_
cmp esi, 8
jbe 0x70108cc9
mov edi, 9
cmp dword [ebp - 0x230], edi
jae case.0x70108ae8.21
mov al, byte [ebx + 5]
mov byte [ebx + 2], 0xf
mov byte [ebx + 4], al
jmp case.0x70108ae8.21
mov eax, esi
test al, al
je case.0x70108ae8.21
mov ecx, esi
mov eax, dword [ebp - 0x1f4]
movzx esi, cl
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp esi, ecx
ja case.0x70108ae8.21
dec esi
dec edx
imul esi, esi, 0xc
add esi, eax
mov byte [ebx + 5], dl
movzx edx, dl
mov ecx, dword [esi]
mov eax, dword [esi + 4]
sub eax, ecx
sar eax, 2
imul eax, eax, 0xaaaaaaab
cmp edx, eax
jae case.0x70108ae8.21
imul edx, edx, 0xc
cmp word [ecx + edx + 8], 0
jne 0x70108d6f
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, 0xf9e
ja 0x70108d6f
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 0x70108ed8
mov eax, esi
test al, al
je case.0x70108ae8.21
mov ecx, esi
mov eax, dword [ebp - 0x1f4]
movzx esi, cl
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp esi, ecx
ja case.0x70108ae8.21
dec esi
dec edx
imul ecx, esi, 0xc
add ecx, eax
mov byte [ebx + 5], dl
movzx eax, dl
mov esi, dword [ecx + 4]
mov dword [ebp - 0x230], eax
sub esi, dword [ecx]
lea ecx, [ebp - 0x14c]
sar esi, 2
imul esi, esi, 0xaaaaaaab
mov edi, esi
call method.OpenMPT::ModSample.ModSample_OpenMPT::MODTYPE___clone_.constprop.0_
cmp esi, 8
jbe 0x70108de5
mov edi, 9
cmp dword [ebp - 0x230], edi
jae 0x70108df7
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 0x70108e33
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, 0xf9e
ja 0x70108e33
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]
jmp 0x70108ed8
mov eax, esi
test al, al
je case.0x70108ae8.21
mov ecx, esi
mov eax, dword [ebp - 0x1f4]
movzx esi, cl
mov ecx, dword [ebp - 0x1f0]
sub ecx, eax
sar ecx, 2
imul ecx, ecx, 0xaaaaaaab
cmp esi, ecx
ja case.0x70108ae8.21
dec esi
dec edx
imul esi, esi, 0xc
add esi, eax
mov byte [ebx + 5], dl
movzx edx, dl
mov ecx, dword [esi]
mov eax, dword [esi + 4]
sub eax, ecx
sar eax, 2
imul eax, eax, 0xaaaaaaab
cmp edx, eax
jae case.0x70108ae8.21
imul edx, edx, 0xc
cmp word [ecx + edx + 0xa], 0
jne 0x70108ecc
mov eax, dword [ebp - 0x200]
mov ax, word [eax + 0x753be]
cmp ax, 0xf9e
ja 0x70108ecc
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]
mov byte [ebx + 1], al
jmp case.0x70108ae8.21
mov byte [ebx + 3], 0xb
test al, 0xf0
je 0x70108ef0
or eax, 0xf
jmp 0x70108ba2
test al, al
jne 0x70108efd
mov byte [ebx + 5], 0
jmp 0x70108f7e
or eax, 0xfffffff0
jmp 0x70108ba2
test dl, 0xf0
je 0x70108f18
shr edx, 4
mov eax, dword [ebp - 0x204]
mov byte [eax + 3], dl
jmp case.0x70108ae8.21
mov byte [ebx + 3], 0x13
or edx, 0xffffffc0
mov byte [ebx + 5], dl
jmp 0x70108f7e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x70108f31
mov al, 0xf
or eax, 0xffffffd0
jmp 0x70108ba2
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x70108f46
mov al, 0xf
or eax, 0xffffff90
jmp 0x70108ba2
mov byte [ebx + 3], 0xa
jmp 0x70108f7e
and edx, 0x70
cmp dl, 0x60
jne case.0x70108ae8.21
mov byte [ebx + 3], 0x13
jmp 0x70108f7e
cmp dl, 0x1f
ja 0x70108f74
mov byte [ebx + 3], 0x10
mov byte [ebp - 0x21c], 0
jmp 0x70108f7e
mov byte [ebx + 3], 0x11
jmp 0x70108f7e
mov byte [ebx + 3], 0
mov eax, dword [ebp - 0x204]
xor edx, edx
mov al, byte [eax + 3]
test al, al
je 0x70108fb3
cmp byte [ebx + 2], 0
jne 0x70108fb3
test al, 0xf0
je 0x70108fa6
movzx edx, al
sar edx, 4
mov byte [ebx + 2], 5
mov byte [ebx + 4], dl
jmp 0x70108fad
mov byte [ebx + 2], 6
mov byte [ebx + 4], al
mov dl, byte [ebp - 0x21a]
cmp byte [ebx + 3], 0
jne 0x701090d0
mov edi, dword [ebp - 0x204]
mov cl, byte [edi + 1]
test cl, cl
je 0x70108fd0
mov byte [ebx + 3], 2
jmp 0x7010901f
mov edi, dword [ebp - 0x204]
mov cl, byte [edi + 2]
test cl, cl
je 0x70108fe3
mov byte [ebx + 3], 3
jmp 0x7010901f
mov edi, dword [ebp - 0x204]
mov cl, byte [edi]
test cl, cl
je 0x70108ff5
mov byte [ebx + 3], 0x13
jmp 0x7010901f
mov edi, dword [ebp - 0x204]
mov cl, byte [edi + 7]
test cl, cl
je 0x7010900b
mov byte [ebx + 3], 4
mov byte [edi + 8], cl
jmp 0x7010901f
mov edi, dword [ebp - 0x204]
mov cl, byte [edi + 4]
test cl, cl
je 0x70109027
mov byte [ebx + 3], 5
mov byte [edi + 5], cl
mov byte [ebx + 5], cl
jmp 0x701090d0
test al, al
setne cl
xor edx, 1
test cl, dl
je 0x70109049
mov byte [ebx + 3], 0xb
test al, 0xf
je 0x70109040
or eax, 0xfffffff0
jmp 0x7010905a
test al, 0xf0
je 0x7010905a
or eax, 0xf
jmp 0x7010905a
mov eax, dword [ebp - 0x204]
mov al, byte [eax + 6]
test al, al
je 0x7010905f
mov byte [ebx + 3], 8
mov byte [ebx + 5], al
jmp 0x701090d0
cmp byte [ebp - 0x218], 0
je 0x70109072
mov byte [ebx + 3], 0x14
mov byte [ebx + 5], 0x61
jmp 0x701090c9
mov al, byte [ebp - 0x224]
xor eax, 1
cmp byte [ebp - 0x20a], 0
setne dl
and al, dl
je 0x701090c9
test byte [ebp - 0x20a], 0xf
mov byte [ebx + 3], 0x18
je 0x701090a1
mov dl, byte [ebp - 0x20a]
or edx, 0xfffffff0
jmp 0x701090c4
test byte [ebp - 0x20a], 0xf0
jne 0x701090bb
mov cl, byte [ebp - 0x20a]
mov byte [ebx + 5], cl
mov byte [ebp - 0x224], al
jmp 0x701090d0
mov dl, byte [ebp - 0x20a]
or edx, 0xf
mov byte [ebx + 5], dl
jmp 0x701090b3
mov byte [ebp - 0x218], 0
add dword [ebp - 0x204], 9
add ebx, 6
jmp 0x7010897b
inc word [ebp - 0x232]
jmp 0x70108804
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 0x70109181
mov dword [esp], 2
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edi
je 0x70109171
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
inc ax
je 0x70109171
mov dword [esp], 2
mov ecx, dword [ebp + 8]
call fcn.700a905c
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.700a905c
push ebx
jmp 0x70109125
mov dword [esp], 0x22
mov ecx, dword [ebp + 8]
call fcn.700a905c
push ecx
test byte [ebp + 0xc], 2
je 0x701095a7
mov word [ebp - 0x20a], 1
mov di, word [ebp - 0x20a]
cmp word [ebp - 0x20c], di
jb 0x701095a7
movzx eax, di
mov dword [ebp - 0x208], eax
mov edi, dword [ebp - 0x200]
imul eax, eax, 0x68
cmp dword [edi + eax + 0x7641c], 0
je 0x7010959b
lea eax, [edi + eax + 0x7641c]
lea ecx, [ebp - 0x14c]
mov dword [ebp - 0x204], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x204]
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 - 0x20a]
cmp ecx, eax
ja 0x7010959b
mov eax, dword [ebp - 0x208]
dec eax
mov dword [ebp - 0x224], eax
imul eax, eax, 0xc
imul ecx, dword [ebp - 0x208], 0x68
mov dword [ebp - 0x230], eax
mov eax, dword [ebp - 0x200]
add eax, ecx
cmp dword [eax + 0x76430], 0
je 0x701094ce
mov edi, dword [eax + 0x7641c]
mov dword [ebp - 0x218], edi
test edi, edi
je 0x701094ce
mov edi, dword [ebp - 0x230]
lea ebx, [edx + edi]
mov edx, dword [ebx + 4]
sub edx, dword [ebx]
sar edx, 2
imul edx, edx, 0xaaaaaaab
cmp edx, 1
jbe 0x701094ce
mov edx, dword [eax + 0x76420]
mov edi, dword [ebp - 0x204]
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 - 0x228], eax
mov dword [ebp - 0x220], edx
xor eax, eax
mov dword [ebp - 0x214], 0
mov esi, dword [ebp - 0x214]
cmp dword [ebp - 0x228], esi
jne 0x701093a2
test cl, cl
je 0x70109394
mov dword [ebp - 0x14c], eax
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x214], eax
jmp 0x701093f3
mov edi, dword [ebp - 0x220]
mov esi, dword [edi]
cmp esi, dword [ebp - 0x218]
jae 0x701093e9
mov edi, dword [ebp - 0x220]
mov edx, dword [ebp - 0x218]
sub edx, esi
mov edi, dword [edi + 4]
cmp edx, edi
jb 0x701093e9
mov esi, 0x10000000
sub esi, edi
add dword [ebp - 0x220], 0xc
cmp eax, esi
ja 0x701093e9
inc dword [ebp - 0x214]
add eax, edi
mov cl, byte [ebp - 0x219]
jmp 0x7010937c
test cl, cl
je 0x701093f3
mov dword [ebp - 0x14c], eax
lea ecx, [ebp - 0x14c]
call method.OpenMPT::ModSample.AllocateSample__
test eax, eax
je 0x701094ce
imul eax, dword [ebp - 0x208], 0x68
add eax, dword [ebp - 0x200]
xor edx, edx
mov dword [ebp - 0x218], 0
mov dword [ebp - 0x228], eax
cmp dword [ebp - 0x214], edx
je 0x70109480
imul eax, edx, 0xc
mov edi, dword [ebp - 0x218]
add eax, dword [ebx]
add edi, dword [ebp - 0x138]
mov dword [ebp - 0x220], edi
mov edi, dword [ebp - 0x228]
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 - 0x218]
lea ecx, [edx - 1]
mov dword [eax], edi
cmp ecx, 8
ja 0x70109474
mov dword [ebp + edx*4 - 0x10c], edi
mov eax, dword [eax + 4]
inc edx
add dword [ebp - 0x218], eax
jmp 0x70109425
mov ecx, dword [ebp - 0x204]
call method.OpenMPT::ModSample.FreeSample__
lea eax, [ebp - 0x14c]
mov ecx, dword [ebp - 0x204]
mov dword [esp], eax
call method.OpenMPT::ModSample.operator_OpenMPT::ModSample_const_
push eax
imul eax, dword [ebp - 0x208], 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 - 0x204]
or word [eax + 0x22], 2
mov eax, dword [ebp - 0x1e8]
mov edi, dword [ebp - 0x224]
movzx eax, word [eax + edi*2]
test ax, ax
je 0x70109519
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 - 0x208], 0x68
mov eax, dword [edi + eax + 0x7641c]
mov dword [esp], eax
mov eax, dword [ebp - 0x204]
call method.OpenMPT.ConvertLoopSlice_OpenMPT::ModSample__OpenMPT::ModSample__unsigned_int__unsigned_int__bool_
mov eax, dword [ebp - 0x230]
add eax, dword [ebp - 0x1f4]
mov esi, dword [eax + 4]
mov ebx, dword [eax]
cmp esi, ebx
je 0x7010959b
movzx eax, word [ebx + 8]
test ax, ax
je 0x70109562
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 - 0x204]
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 0x70109596
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 - 0x204]
mov ecx, dword [ebx]
call method.OpenMPT.ConvertLoopSlice_OpenMPT::ModSample__OpenMPT::ModSample__unsigned_int__unsigned_int__bool_
add ebx, 0xc
jmp 0x7010952a
inc word [ebp - 0x20a]
jmp 0x70109194
cmp dword [ebp - 0x210], 0
je 0x701095c7
mov eax, dword [ebp - 0x210]
mov dword [esp], eax
call sym.operator_delete_void_
jmp 0x701095c7
mov byte [ebp - 0x219], 0
mov eax, dword [ebp - 0x1e8]
test eax, eax
je 0x701095d9
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 0x70109654
mov al, byte [ebp - 0x219]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 8