Function at 0x700f2594
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ebx, ecx
sub esp, 0x27c
mov ecx, dword [ebp + 8]
mov dword [esp], 0x5b8
call fcn.700a9020
test al, al
push edx
jne 0x700f25c2
mov byte [ebp - 0x258], 0
jmp 0x700f2d63
mov eax, dword [ebp + 8]
lea esi, [ebp - 0x23c]
mov dword [esp + 4], esi
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadArrayIcLj4EN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileC
mov byte [ebp - 0x258], al
test al, al
je 0x700f25b6
mov ecx, ebx
mov dword [esp], 1
call method.OpenMPT::CSoundFile.InitializeGlobals_OpenMPT::MODTYPE_
lea ecx, [ebx + 0x106488]
mov dword [ebp - 0x24c], ecx
push edx
and dword [ebx + 0x106490], 0xfff7ffff
mov dword [esp + 4], 1
mov dword [esp], 0x54
call method.std::bitset_122u_.set_unsigned_int__bool_
push ecx
push ecx
mov ecx, dword [ebp - 0x24c]
mov dword [esp + 4], 1
mov dword [esp], 0x55
call method.std::bitset_122u_.set_unsigned_int__bool_
mov edx, 0x702b24a8
mov eax, esi
push edi
push edi
call method.OpenMPT.IsMagic_char_const__char_const_____5__
test al, al
je 0x700f26ba
lea ecx, [ebp - 0x218]
mov dword [esp], str.MnemoTroN_SoundTracker
call fcn.701f9670
lea ecx, [ebx + 0x13cff0]
push eax
lea eax, [ebp - 0x218]
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 - 0x218]
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 ecx, [ebp - 0x218]
mov dword [esp], 0x702b2612
call fcn.701f9670
lea ecx, [ebx + 0x13d008]
push eax
lea eax, [ebp - 0x218]
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 - 0x218]
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__
mov dword [esp], 0x702b2617
jmp 0x700f273b
mov edx, str.IT10
mov eax, esi
call method.OpenMPT.IsMagic_char_const__char_const_____5__
test al, al
je 0x700f25b6
lea ecx, [ebp - 0x218]
mov dword [esp], 0x702b2628
call fcn.701f9670
lea eax, [ebp - 0x218]
push ecx
lea ecx, [ebx + 0x13cff0]
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 - 0x218]
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__
lea ecx, [ebp - 0x218]
mov dword [esp], 0x702b2634
call fcn.701f9670
lea eax, [ebp - 0x218]
lea ecx, [ebx + 0x13d008]
push edi
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 - 0x218]
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__
mov dword [esp], str.Ice_Tracker_1.0___1.1
lea ecx, [ebp - 0x218]
lea esi, [ebp - 0x218]
call fcn.701f9670
lea ecx, [ebx + 0x13d020]
lea edi, [ebx + 0x13cfa8]
push eax
lea eax, [ebp - 0x218]
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 - 0x218]
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__
mov dword [ebx + 0x13d068], 0x1c
mov ecx, dword [ebp + 8]
mov dword [esp], 0
call fcn.700a9020
lea ecx, [ebp - 0x22c]
push eax
mov dword [ebx + 0x13cfac], 0
mov eax, dword [ebx + 0x13cfa8]
mov byte [eax], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], 0x14
call fcn.700a8e0c
lea ecx, [ebp - 0x22c]
push edx
push edx
call fcn.7015b9c0
mov dword [ebp - 0x238], eax
mov eax, dword [ebp - 0x22c]
mov dword [ebp - 0x234], eax
lea eax, [ebp - 0x238]
mov dword [esp], eax
mov ecx, esi
mov byte [ebp - 0x230], 3
call method.OpenMPT::mpt::StringModeBufRefImpl_char_const_::operator_std::__cxx11::basic_string_char__std::char_traits_char___std.allocator_char______const
push eax
mov ecx, edi
mov dword [esp], esi
lea edi, [ebx + 0x76484]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.operator_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov ecx, esi
push eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea ecx, [ebp - 0x224]
call fcn.701c70c4
lea eax, [ebx + 0xe70a0]
mov dword [ebp - 0x250], eax
lea eax, [ebx + 0x7711c]
mov word [ebx + 0x753be], 0x1f
mov dword [ebp - 0x254], eax
mov dword [ebp - 0x24c], 0
jmp 0x700f2855
lea esi, [ebp - 0x218]
mov eax, dword [ebp + 8]
mov dword [esp + 4], esi
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader10ReadStructIN7OpenMPT15MODSampleHeaderENS4_6detail10FileReaderINS1_24FileCursorTraitsF
mov edx, edi
mov dword [esp], 1
mov ecx, dword [ebp - 0x250]
mov eax, esi
add edi, 0x68
call method.OpenMPT.ReadSample_OpenMPT::MODSampleHeader_const__OpenMPT::ModSample__mpt::mpt_libopenmpt::charbuf_32u___bool_
add dword [ebp - 0x250], 0x20
add dword [ebp - 0x24c], eax
cmp edi, dword [ebp - 0x254]
jne 0x700f2855
cmp dword [ebp - 0x24c], 0x28
ja 0x700f25b6
mov dword [esp], 2
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edi
jne 0x700f28c0
mov word [esi], 0
jmp 0x700f28d5
mov ecx, dword [ebp + 8]
mov dword [esp], esi
mov dword [esp + 4], 2
call fcn.700a9094
push ecx
push ecx
mov esi, dword [ebp - 0x218]
mov eax, esi
mov edi, esi
cmp al, 0x80
ja 0x700f25b6
mov eax, esi
mov dword [esp], 0x200
movzx eax, ah
mov ecx, dword [ebp + 8]
mov word [ebp - 0x264], ax
call fcn.7015bbf8
test al, al
lea eax, [ebp - 0x218]
push edx
jne 0x700f291a
lea edx, [ebp - 0x18]
mov byte [eax], 0
inc eax
cmp eax, edx
jne 0x700f2910
jmp 0x700f292f
mov dword [esp], eax
mov dword [esp + 4], 0x200
mov ecx, dword [ebp + 8]
call fcn.700a9094
push eax
push eax
lea eax, [ebp - 0x218]
lea edx, [ebp - 0x18]
mov dword [ebp - 0x260], eax
mov cl, byte [ebp - 0x264]
cmp byte [eax], cl
ja 0x700f25b6
inc eax
cmp eax, edx
jne 0x700f293e
cmp dword [ebp + 0xc], 0x40
je 0x700f2d63
or dword [ebx + 0x753d0], 0x1200000
mov word [ebx + 0x753bc], 4
mov word [ebx + 0x753c0], 0
mov dword [ebx + 0x753c4], 6
mov dword [ebx + 0x753cc], 0x1312d0
mov dword [ebx + 0x75404], 0x38
mov dword [ebx + 0x75408], 0x3580
mov dword [ebx + 0x753e4], 0x40
mov ecx, ebx
mov dword [esp], 0
call method.OpenMPT::CSoundFile.SetupMODPanning_bool_
mov word [ebp - 0x22c], 0xffff
push eax
mov eax, esi
movzx ecx, byte [ebx + 0x76418]
imul ecx, ecx, 0x2c
movzx eax, al
mov word [ebp - 0x26e], ax
lea eax, [ebp - 0x22c]
add ecx, dword [ebx + 0x76408]
mov dword [esp + 4], eax
mov eax, edi
movzx edi, al
mov dword [esp], edi
call method.std::vector_unsigned_short__std::allocator_unsigned_short___.resize_unsigned_int__unsigned_short_const_
mov word [ebp - 0x238], 0
push eax
push eax
lea eax, [ebx + 0x763f8]
mov dword [esp], edi
mov ecx, eax
mov dword [ebp - 0x268], eax
call method.OpenMPT::CPatternContainer.ResizeArray_unsigned_short_
xor edi, edi
mov byte [ebp - 0x24c], 0
push eax
cmp word [ebp - 0x26e], di
jbe 0x700f2d08
movzx eax, byte [ebx + 0x76418]
imul eax, eax, 0x2c
add eax, dword [ebx + 0x76408]
mov ecx, dword [ebp - 0x268]
mov eax, dword [eax]
mov word [eax + edi*2], di
mov dword [esp + 4], 0x40
mov dword [esp], edi
call method.OpenMPT::CPatternContainer.Insert_unsigned_short__unsigned_int_
test al, al
push ecx
push ecx
je 0x700f2cfb
mov eax, edi
mov dword [ebp - 0x250], 0
shl eax, 6
mov dword [ebp - 0x25c], eax
mov edx, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov ecx, dword [ebp + 8]
movzx eax, byte [eax + edx]
shl eax, 8
add eax, 0x5bc
mov dword [esp], eax
call fcn.700a9020
mov ecx, dword [ebp - 0x25c]
mov eax, dword [ebp - 0x250]
push esi
add ecx, dword [ebx + 0x763f8]
mov dword [esp + 4], eax
mov dword [esp], 0
call method.OpenMPT::CPattern.GetpModCommand_unsigned_int__unsigned_short_
mov esi, eax
push edx
lea eax, [eax + 0x600]
push edx
mov dword [ebp - 0x254], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], esi
mov dword [esp], eax
call sym.__ZN7OpenMPT10CSoundFile19ReadMODPatternEntryERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataENS5_2
movzx edx, al
movzx ecx, ah
test dl, dl
jne 0x700f2aec
test cl, cl
jne 0x700f2afd
jmp 0x700f2b12
cmp cl, 0xf
jbe 0x700f2af6
cmp dl, 0xe
je 0x700f2b12
sub eax, 5
cmp al, 4
jbe 0x700f2b12
movzx ecx, cl
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], esi
call method.OpenMPT::CSoundFile.ConvertModCommand_OpenMPT::ModCommand__unsigned_char__unsigned_char_
jmp 0x700f2b16
mov byte [esi + 3], 0
add esi, 0x18
cmp dword [ebp - 0x254], esi
jne 0x700f2acd
inc dword [ebp - 0x250]
cmp dword [ebp - 0x250], 4
jne 0x700f2a77
mov eax, dword [ebx + 0x763f8]
mov edx, dword [ebp - 0x25c]
mov dword [ebp - 0x254], 0
mov eax, dword [eax + edx]
mov dword [ebp - 0x26c], eax
imul eax, dword [ebp - 0x254], 0x18
add eax, dword [ebp - 0x26c]
xor edx, edx
mov dword [ebp - 0x250], eax
mov al, byte [ebp - 0x238]
mov byte [ebp - 0x262], al
mov al, byte [ebp - 0x237]
mov byte [ebp - 0x255], al
mov byte [ebp - 0x256], 0
mov eax, dword [ebp - 0x250]
mov al, byte [eax + edx + 3]
mov byte [ebp - 0x257], al
sub eax, 0x10
cmp al, 1
ja 0x700f2c35
mov eax, dword [ebp - 0x250]
mov byte [eax + edx + 3], 0x10
mov al, byte [eax + edx + 5]
mov cl, al
and cl, 0xf0
mov byte [ebp - 0x24c], cl
je 0x700f2c35
movzx esi, al
sar esi, 4
and al, 0xf
mov byte [ebp - 0x257], al
movzx eax, al
setne cl
cmp eax, esi
setne al
and cl, al
mov byte [ebp - 0x261], cl
jne 0x700f2c02
mov al, byte [ebp - 0x255]
mov byte [ebp - 0x24c], 0
mov byte [ebp - 0x257], al
mov al, byte [ebp - 0x256]
mov byte [ebp - 0x261], al
jmp 0x700f2c11
mov eax, esi
mov byte [ebp - 0x24c], 1
mov byte [ebp - 0x262], al
mov ecx, dword [ebp - 0x250]
mov eax, esi
mov byte [ecx + edx + 5], al
mov al, byte [ebp - 0x257]
mov byte [ebp - 0x255], al
mov al, byte [ebp - 0x261]
mov byte [ebp - 0x256], al
add edx, 6
cmp edx, 0x18
jne 0x700f2b87
cmp byte [ebp - 0x256], 0
je 0x700f2c62
mov al, byte [ebp - 0x262]
mov byte [ebp - 0x238], al
mov al, byte [ebp - 0x255]
mov byte [ebp - 0x237], al
cmp byte [ebp - 0x24c], 0
je 0x700f2ce8
movzx eax, byte [ebp - 0x24c]
mov ecx, dword [ebp - 0x25c]
mov byte [ebp - 0x222], 0x10
mov al, byte [ebp + eax - 0x239]
add ecx, dword [ebx + 0x763f8]
mov byte [ebp - 0x221], al
mov al, byte [ebp - 0x220]
and eax, 0xfffffff8
mov word [ebp - 0x224], 0xffff
or eax, 1
mov dword [ebp - 0x22c], 0
mov byte [ebp - 0x220], al
mov eax, dword [ebp - 0x254]
mov dword [ebp - 0x228], eax
lea eax, [ebp - 0x22c]
mov dword [esp], eax
call method.OpenMPT::CPattern.WriteEffect_OpenMPT::EffectWriter_
inc byte [ebp - 0x24c]
cmp byte [ebp - 0x24c], 3
push ecx
jne 0x700f2ce8
mov byte [ebp - 0x24c], 1
inc dword [ebp - 0x254]
cmp dword [ebp - 0x254], 0x40
jne 0x700f2b53
add dword [ebp - 0x260], 4
inc edi
jmp 0x700f2a1f
test byte [ebp + 0xc], 2
je 0x700f2d63
movzx eax, byte [ebp - 0x264]
shl eax, 8
mov ecx, dword [ebp + 8]
add eax, 0x5bc
mov esi, 0x76484
mov dword [esp], eax
call fcn.700a9020
push edx
cmp dword [ebx + esi], 0
je 0x700f2d58
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x22c]
mov dword [esp + 4], eax
lea eax, [ebx + esi]
mov dword [esp], eax
mov dword [ebp - 0x22c], 0x108
call sym.__ZNK7OpenMPT8SampleIO10ReadSampleERNS_9ModSampleERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataEN
push eax
push eax
add esi, 0x68
cmp esi, 0x7711c
jne 0x700f2d2e
mov al, byte [ebp - 0x258]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 8