Function at 0x700f6408
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0x358]
sub esp, 0x44c
mov dword [ebp - 0x3f0], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader10ReadStructIN7OpenMPT14MMD0FileHeaderENS4_6detail10FileReaderINS1_24FileCursorTraitsFi
test al, al
jne 0x700f6446
mov byte [ebp - 0x3f5], 0
jmp 0x700f8e09
mov eax, ebx
call method.OpenMPT.ValidateHeader_OpenMPT::MMD0FileHeader_const_
test al, al
je 0x700f643a
mov eax, ebx
call method.OpenMPT.GetHeaderMinimumAdditionalSize_OpenMPT::MMD0FileHeader_const_
cmp edx, 0
jbe 0x700f6460
or eax, 0xffffffff
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
mov byte [ebp - 0x3f5], al
test al, al
push edx
je 0x700f643a
cmp dword [ebp + 0xc], 0x40
je 0x700f8e09
mov ecx, dword [ebp - 0x3f0]
mov dword [esp], 8
call method.OpenMPT::CSoundFile.InitializeGlobals_OpenMPT::MODTYPE_
mov ecx, dword [ebp - 0x3f0]
push ebx
call method.OpenMPT::CSoundFile.InitializeChannels__
mov al, byte [ebp - 0x355]
mov ecx, dword [ebp + 8]
sub eax, 0x30
lea ebx, [ebp - 0x134]
mov byte [ebp - 0x3e7], al
mov eax, dword [ebp - 0x350]
bswap eax
mov dword [esp], eax
call fcn.700a9020
mov eax, dword [ebp + 8]
mov ecx, ebx
push esi
mov dword [esp], eax
mov dword [esp + 4], 0x1f8
call fcn.700a90e0
lea ecx, [ebp - 0x3d8]
push edi
push edi
mov dword [esp], ebx
call fcn.700a9354
mov ecx, ebx
push eax
call fcn.700aa2c4
lea eax, [ebp - 0x250]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader10ReadStructIN7OpenMPT7MMDSongENS4_6detail10FileReaderINS1_24FileCursorTraitsFileDataEN
cmp byte [ebp - 0x135], 0x3f
jbe 0x700f651e
mov byte [ebp - 0x3f5], 0
jmp 0x700f8d38
test byte [ebp - 0x250], 0x80
jne 0x700f6512
xor eax, eax
lea edi, [ebp - 0x2f0]
mov ecx, 0x14
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x338]
bswap eax
test eax, eax
je 0x700f6567
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ecx
je 0x700f6567
lea eax, [ebp - 0x2f0]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader10ReadStructIN7OpenMPT7MMD0ExpENS4_6detail10FileReaderINS1_24FileCursorTraitsFileDataEN
mov al, byte [ebp - 0x3e7]
lea ecx, [ebp - 0x2a0]
mov byte [ebp - 0x3f8], al
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x324]
mov dword [eax + 8], 0
lea eax, [ebp - 0x134]
mov dword [esp], eax
mov eax, dword [ebp + 8]
call sym.__ZN7OpenMPTL15MEDReadNextSongERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataENS4_24FileCursorFile
cmp dword [ebp - 0x304], 0
mov eax, 1
je 0x700f65b0
movzx eax, byte [ebp - 0x2f1]
inc eax
mov dword [ebp - 0x39c], eax
mov dword [ebp - 0x370], 0xff
lea edx, [ebp - 0x39c]
cmp eax, 0x100
jne 0x700f65d3
lea edx, [ebp - 0x370]
cmp dword [edx], 0
mov dword [ebp - 0x388], 0
jg 0x700f65e8
lea edx, [ebp - 0x388]
mov eax, dword [edx]
mov byte [ebp - 0x3f6], al
cmp al, 0x31
jbe 0x700f65fb
mov byte [ebp - 0x3f6], 0x32
mov ebx, 4
mov byte [ebp - 0x3f4], 0
mov dword [ebp - 0x400], 0
mov dl, byte [ebp - 0x3f4]
cmp byte [ebp - 0x3f6], dl
je 0x700f6714
movzx edi, word [ebp - 0x134]
rol di, 8
cmp byte [ebp - 0x19], 0x3f
ja 0x700f670b
test di, di
js 0x700f670b
xor esi, esi
cmp di, si
jbe 0x700f66a6
mov eax, dword [ebp - 0x314]
mov ecx, dword [ebp + 8]
bswap eax
lea eax, [eax + esi*4]
mov dword [esp], eax
call fcn.700a9020
test al, al
push edx
je 0x700f66a3
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ecx
je 0x700f66a3
mov eax, dword [ebp + 8]
cmp byte [ebp - 0x3f8], 0
mov dword [esp], eax
jne 0x700f6697
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadUint8IN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCursor
movzx eax, al
jmp 0x700f669c
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
cmp bx, ax
jae 0x700f66a3
mov ebx, eax
inc esi
jmp 0x700f6643
mov eax, dword [ebp - 0x2a0]
bswap eax
cmp eax, dword [ebp - 0x400]
jbe 0x700f66fc
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f66fc
mov eax, dword [ebp - 0x2a0]
lea ecx, [ebp - 0x2a0]
bswap eax
mov dword [ebp - 0x400], eax
lea eax, [ebp - 0x134]
mov dword [esp], eax
lea edx, [ebp - 0x324]
mov eax, dword [ebp + 8]
call sym.__ZN7OpenMPTL15MEDReadNextSongERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataENS4_24FileCursorFile
inc byte [ebp - 0x3f4]
jmp 0x700f6611
mov al, byte [ebp - 0x3f4]
inc eax
mov byte [ebp - 0x3f6], al
jmp 0x700f6714
mov byte [ebp - 0x3f6], 0
xor ebx, ebx
lea eax, [ebx - 1]
cmp ax, 0x7e
ja 0x700f6512
mov eax, dword [ebp - 0x3f0]
mov dword [ebp - 0x3e4], 0
mov dword [ebp - 0x3e0], 0
mov dword [ebp - 0x3dc], 0
mov word [eax + 0x753bc], bx
mov eax, dword [ebp - 0x340]
bswap eax
test eax, eax
je 0x700f6825
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
mov edx, dword [ebp - 0x3e0]
push eax
mov ecx, dword [ebp - 0x3e4]
mov eax, edx
sub eax, ecx
movzx ebx, byte [ebp - 0x135]
sar eax, 2
cmp ebx, eax
jbe 0x700f679b
mov edi, ebx
lea ecx, [ebp - 0x3e4]
sub edi, eax
mov dword [esp], edi
call method.std::vector_mpt::mpt_libopenmpt.packed_unsigned_int___mpt::mpt_libopenmpt::endian_305419896__unsigned_int___std::allocator_mpt::mpt_libopenmpt::packed_unsigned_int___mpt::mpt_libopenmpt::endian_305419896__unsigned_int_____::_M_default_append_unsign
push edi
jmp 0x700f67aa
jae 0x700f67aa
lea eax, [ecx + ebx*4]
cmp edx, eax
je 0x700f67aa
mov dword [ebp - 0x3e0], eax
lea eax, [ebx*4]
mov ecx, dword [ebp + 8]
mov dword [esp], eax
call fcn.7015bbf8
test al, al
push esi
jne 0x700f6804
movzx eax, byte [ebp - 0x135]
mov edi, dword [ebp - 0x3f0]
cmp byte [ebp - 0x3e7], 1
mov word [edi + 0x753be], ax
mov word [edi + 0x753c0], ax
mov al, byte [ebp - 0x3f5]
mov byte [ebp - 0x42d], al
jbe 0x700f6833
mov al, byte [ebp - 0x148]
not eax
shr al, 7
mov byte [ebp - 0x42d], al
jmp 0x700f6833
mov edx, dword [ebp - 0x3e4]
mov eax, dword [ebp - 0x3e0]
sub eax, edx
mov dword [esp], edx
mov dword [esp + 4], eax
mov ecx, dword [ebp + 8]
call fcn.700a9094
push ebx
push ebx
jmp 0x700f67c1
cmp byte [ebp - 0x135], 0
je 0x700f67c1
jmp 0x700f8d1f
mov word [ebp - 0x3f8], 1
mov word [ebp - 0x40c], 1
mov byte [ebp - 0x42e], 0
mov byte [ebp - 0x400], 0
mov eax, dword [ebp - 0x3f0]
mov edi, dword [ebp - 0x40c]
cmp word [eax + 0x753c0], di
jb 0x700f6d2d
movzx eax, word [ebp - 0x3f8]
movzx ebx, di
mov dword [esp + 4], eax
mov dword [esp], ebx
mov ecx, dword [ebp - 0x3f0]
call method.OpenMPT::CSoundFile.AllocateInstrument_unsigned_short__unsigned_short_
push ecx
test eax, eax
push ecx
je 0x700f8d1f
mov eax, dword [ebp - 0x3f0]
lea edi, [ebp - 0x324]
mov ecx, 6
mov esi, dword [eax + ebx*4 + 0xdbd1c]
xor eax, eax
rep stosb byte es:[edi], al
lea ecx, [ebp - 0x2a0]
call fcn.700a9cb4
mov eax, dword [ebp - 0x3e4]
mov eax, dword [eax + ebx*4 - 4]
bswap eax
test eax, eax
je 0x700f6986
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f6986
lea eax, [ebp - 0x324]
mov dword [esp + 4], 6
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 6
push eax
je 0x700f6912
lea edi, [ebp - 0x324]
mov ecx, 6
xor eax, eax
rep stosb byte es:[edi], al
jmp 0x700f6922
mov dword [esp], 6
mov ecx, dword [ebp + 8]
call fcn.700a905c
push eax
movzx edx, word [ebp - 0x320]
mov eax, dword [ebp - 0x324]
xchg dl, dh
bswap eax
test dx, dx
jle 0x700f693f
and dl, 0x20
je 0x700f693f
add eax, eax
lea ebx, [ebp - 0x3c4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov ecx, ebx
mov dword [esp], eax
call fcn.700a90e0
push edx
lea edi, [ebp - 0x134]
push edx
mov ecx, edi
mov dword [esp], ebx
call fcn.700a9354
push ecx
lea ecx, [ebp - 0x2a0]
mov dword [esp], edi
call fcn.700aa4bc
mov ecx, edi
push eax
call fcn.700aa2c4
mov ecx, ebx
call fcn.700aa2c4
movzx eax, word [ebp - 0x320]
xchg al, ah
mov word [ebp - 0x404], ax
mov ebx, dword [ebp - 0x404]
and eax, 0xf
and ebx, 0xf
mov word [ebp - 0x410], ax
cmp word [ebp - 0x404], 0
jns 0x700f69d5
xor eax, eax
mov word [esi + eax + 0xec], 0
add eax, 2
cmp eax, 0x100
jne 0x700f69b5
mov al, byte [ebp - 0x3f5]
mov byte [ebp - 0x42e], al
lea eax, [ebp - 0x134]
mov dword [esp + 4], 8
mov dword [esp], eax
lea ecx, [ebp - 0x3d8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 8
push eax
jne 0x700f6a0d
mov dword [esp], 8
lea ecx, [ebp - 0x3d8]
call fcn.700a905c
push eax
jmp 0x700f6a21
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0
mov edi, dword [ebp - 0x404]
not edi
shr di, 0xf
cmp ebx, 6
mov ecx, edi
mov eax, edi
setbe dl
and cl, dl
mov byte [ebp - 0x408], cl
je 0x700f6ac8
movzx edx, byte [ebx + 0x702d3360]
mov byte [ebp - 0x3f4], dl
cmp dl, 1
jbe 0x700f6afd
mov eax, dword [ebp - 0x3f0]
mov ecx, 0x3c
mov ax, word [eax + 0x753be]
lea eax, [eax + edx - 1]
mov edx, dword [ebp - 0x3f0]
mov word [edx + 0x753be], ax
movzx edx, byte [ebp - 0x3f4]
shl edx, 3
movzx ebx, byte [edx + 0x702d3310]
add ebx, dword [ebp - 0x3f8]
lea eax, [ecx - 0xc]
mov edi, ebx
mov bl, byte [edx + 0x702d3370]
mov word [esi + eax*2 + 0xec], di
add byte [esi + eax + 0x6c], bl
inc eax
cmp eax, ecx
jne 0x700f6aa0
inc edx
lea ecx, [eax + 0xc]
cmp eax, 0x78
jne 0x700f6a88
mov al, byte [ebp - 0x408]
mov byte [ebp - 0x400], al
jmp 0x700f6b3e
cmp word [ebp - 0x410], 7
mov byte [ebp - 0x3f4], 1
jne 0x700f6afd
mov dword [esp], 0xffffffe8
mov ecx, esi
call method.OpenMPT::ModInstrument.Transpose_signed_char_
push eax
mov al, byte [ebp - 0x3f5]
mov byte [ebp - 0x400], al
mov byte [ebp - 0x3f4], 1
jmp 0x700f6b3e
test al, al
je 0x700f6b3e
cmp byte [ebp - 0x42d], 0
je 0x700f6b3e
xor ebx, ebx
mov edi, 0xc
movzx edx, byte [esi + ebx + 0x6c]
movsx eax, byte [ebp - 0x12d]
add eax, edx
mov ecx, edx
cmp eax, 0x54
jle 0x700f6b35
sub eax, 0x49
cdq
idiv edi
imul eax, eax, 0xc
sub ecx, eax
mov byte [esi + ebx + 0x6c], cl
inc ebx
cmp ebx, 0x80
jne 0x700f6b11
mov al, byte [ebp - 0x130]
lea edx, [eax - 1]
cmp dl, 0xf
ja 0x700f6b5b
mov byte [esi + 0x1f], al
mov al, byte [ebp - 0x3f5]
mov byte [ebp - 0x400], al
mov al, byte [ebp - 0x12f]
mov dl, al
dec dl
js 0x700f6b6a
mov byte [esi + 0x1e], al
movzx ebx, word [ebp - 0x3f8]
imul ebx, ebx, 0x68
add ebx, dword [ebp - 0x3f0]
xor edi, edi
mov esi, ebx
movzx eax, byte [ebp - 0x3f4]
cmp ax, di
mov word [ebp - 0x408], ax
jbe 0x700f6bd0
lea ecx, [esi + 0x7641c]
mov dword [esp], 8
call method.OpenMPT::ModSample.Initialize_OpenMPT::MODTYPE_
push eax
movzx eax, byte [ebp - 0x12e]
cmp al, 0x40
jbe 0x700f6bb4
mov eax, 0x40
shl eax, 2
inc edi
mov word [esi + 0x7643a], ax
mov al, byte [ebp - 0x12d]
mov byte [esi + 0x76440], al
add esi, 0x68
jmp 0x700f6b7e
cmp word [ebp - 0x404], 0
js 0x700f6be0
test byte [ebp + 0xc], 2
jne 0x700f6bf8
mov esi, dword [ebp - 0x408]
lea ecx, [ebp - 0x2a0]
add word [ebp - 0x3f8], si
jmp 0x700f6d1c
movzx eax, word [ebp - 0x132]
xchg al, ah
mov word [ebp - 0x410], ax
movzx eax, word [ebp - 0x134]
xchg al, ah
movzx eax, ax
mov ecx, dword [ebp - 0x2a0]
mov dword [ebp - 0x370], 0x10108
lea edi, [eax + eax]
movzx eax, word [ebp - 0x410]
add eax, eax
add eax, edi
mov dword [ebp - 0x404], eax
mov eax, dword [ecx]
call dword [eax + 0x18]
movzx edx, word [ebp - 0x320]
mov esi, eax
mov eax, edx
xchg al, ah
and dh, 0x10
je 0x700f6c58
shr esi, 1
mov byte [ebp - 0x370], 0x10
test al, 0x20
je 0x700f6c65
shr esi, 1
mov byte [ebp - 0x36f], 3
test al, 0x40
je 0x700f6c70
mov byte [ebp - 0x36d], 2
cmp byte [ebp - 0x3f4], 1
jbe 0x700f6c91
mov cl, byte [ebp - 0x3f4]
mov eax, 1
shl eax, cl
xor edx, edx
lea ecx, [eax - 1]
mov eax, esi
div ecx
mov esi, eax
mov word [ebp - 0x3f4], 0
mov edx, dword [ebp - 0x3f4]
lea ecx, [ebp - 0x2a0]
cmp word [ebp - 0x408], dx
je 0x700f6d0f
lea eax, [ebx + 0x7641c]
mov dword [ebx + 0x7641c], esi
mov dword [esp + 4], ecx
mov dword [esp], eax
lea ecx, [ebp - 0x370]
call sym.__ZNK7OpenMPT8SampleIO10ReadSampleERNS_9ModSampleERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataEN
push eax
cmp word [ebp - 0x410], 1
push eax
jbe 0x700f6cf3
or word [ebx + 0x7643e], 2
mov eax, dword [ebp - 0x404]
mov dword [ebx + 0x76420], edi
mov dword [ebx + 0x76424], eax
mov edx, dword [ebp - 0x404]
add esi, esi
add dword [ebp - 0x404], edx
add edi, edi
inc word [ebp - 0x3f4]
add ebx, 0x68
jmp 0x700f6c9a
mov esi, dword [ebp - 0x408]
add word [ebp - 0x3f8], si
call fcn.700aa2c4
inc word [ebp - 0x40c]
jmp 0x700f6853
mov eax, dword [ebp - 0x2ec]
bswap eax
test eax, eax
je 0x700f7002
cmp word [ebp - 0x2e8], 0
je 0x700f7002
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
mov byte [ebp - 0x3f8], al
push ecx
test al, al
je 0x700f7002
movzx edi, byte [ebp - 0x135]
movzx eax, word [ebp - 0x2e8]
mov word [ebp - 0x408], di
xchg al, ah
cmp di, ax
jbe 0x700f6d88
mov word [ebp - 0x408], ax
movzx eax, word [ebp - 0x2e6]
mov dword [ebp - 0x404], 0
xchg al, ah
mov word [ebp - 0x3f4], ax
mov edi, dword [ebp - 0x404]
cmp word [ebp - 0x408], di
jbe 0x700f7002
movzx esi, word [ebp - 0x3f4]
mov ebx, esi
cmp esi, 0x16
jbe 0x700f6dc8
mov ebx, 0x16
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edx
jne 0x700f6de2
mov ecx, dword [ebp + 8]
call fcn.7015bc28
mov ebx, eax
lea edi, [ebp - 0x134]
mov dword [esp + 4], ebx
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
mov ecx, 0x16
push eax
sub ecx, ebx
add ebx, edi
push eax
mov edi, ebx
xor eax, eax
rep stosb byte es:[edi], al
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call fcn.700a905c
movzx ecx, byte [ebp - 0x134]
mov eax, dword [ebp - 0x3f0]
mov esi, dword [ebp - 0x404]
push ebx
test cl, cl
mov ebx, dword [eax + esi*4 + 0xdbd20]
je 0x700f6ef8
lea eax, [ecx - 1]
mov dl, byte [ebp - 0x133]
mov word [ebp - 0x29c], ax
lea esi, [ebx + 0x30]
xor eax, eax
mov word [ebp - 0x2a0], 0
mov byte [ebp - 0x29e], 0x40
mov byte [ebp - 0x29a], 0x40
test dl, dl
je 0x700f6e73
movzx edi, dl
mov eax, 0x40
xor edx, edx
div di
add eax, ecx
lea edx, [ebp - 0x294]
mov word [ebp - 0x298], ax
lea eax, [ebp - 0x2a0]
mov byte [esp + 8], 0
mov dword [esp + 4], edx
mov dword [esp], eax
mov ecx, esi
mov byte [ebp - 0x296], 0
call method.void_std::vector_OpenMPT::EnvelopeNode__std::allocator_OpenMPT::EnvelopeNode___::_M_assign_aux_OpenMPT.EnvelopeNode_const__OpenMPT::EnvelopeNode_const__OpenMPT::EnvelopeNode_const__std::forward_iterator_tag_
sub esp, 0xc
cmp byte [ebp - 0x134], 1
jne 0x700f6ed1
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebx + 0x34]
lea edx, [ecx + 4]
cmp eax, edx
je 0x700f6ecd
sub eax, edx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp], ecx
call sym._memmove
sub dword [ebx + 0x34], 4
mov dl, byte [ebp - 0x133]
mov eax, 0x7fff
test dl, dl
je 0x700f6ee6
movzx eax, dl
shl eax, 9
or byte [ebx + 0x3c], 1
mov dword [ebx], eax
mov al, byte [ebp - 0x3f8]
mov byte [ebp - 0x400], al
cmp word [ebp - 0x3f4], 4
jbe 0x700f6f4c
mov al, byte [ebp - 0x130]
test al, al
je 0x700f6f21
add eax, 0x18
mov byte [ebx + 0x84], al
mov al, byte [ebp - 0x3f8]
mov byte [ebp - 0x400], al
cmp word [ebp - 0x3f4], 0x12
jbe 0x700f6f4c
movzx eax, byte [ebp - 0x122]
inc eax
shr eax, 1
mov dword [ebx + 4], eax
cmp word [ebp - 0x3f4], 0x14
jbe 0x700f6f4c
mov eax, dword [ebp - 0x120]
mov word [ebx + 0x1c], ax
movzx eax, word [ebx + 0x166]
imul ecx, eax, 0x68
movsx edx, byte [ebp - 0x131]
shl edx, 4
add ecx, dword [ebp - 0x3f0]
cmp word [ebp - 0x3f4], 0xe
mov byte [ecx + 0x76441], dl
jbe 0x700f6f96
mov edx, dword [ebp - 0x12a]
mov ebx, dword [ebp - 0x126]
bswap edx
bswap ebx
mov dword [ecx + 0x76420], edx
add edx, ebx
mov dword [ecx + 0x76424], edx
jmp 0x700f6fa0
cmp word [ebp - 0x3f4], 5
jbe 0x700f6ff7
imul ecx, eax, 0x68
mov esi, dword [ebp - 0x3f0]
mov dl, byte [ebp - 0x12f]
mov cx, word [esi + ecx + 0x7643e]
mov ebx, ecx
and ebx, 0xfffd
test dl, 1
je 0x700f6fca
or ecx, 2
movzx ebx, cx
mov ecx, ebx
and ecx, 0xfffffffb
test dl, 8
je 0x700f6fd9
or ebx, 4
mov ecx, ebx
imul eax, eax, 0x68
add eax, dword [ebp - 0x3f0]
and dl, 4
mov word [eax + 0x7643e], cx
je 0x700f6ff7
mov word [eax + 0x7643c], 0
inc dword [ebp - 0x404]
jmp 0x700f6da2
mov eax, dword [ebp - 0x2dc]
bswap eax
test eax, eax
je 0x700f71f3
cmp word [ebp - 0x2d8], 0
je 0x700f71f3
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ecx
je 0x700f71f3
movzx esi, byte [ebp - 0x135]
movzx eax, word [ebp - 0x2d8]
mov word [ebp - 0x3f8], si
xchg al, ah
cmp si, ax
jbe 0x700f7057
mov word [ebp - 0x3f8], ax
movzx eax, word [ebp - 0x2d6]
mov dword [ebp - 0x3f4], 0
xchg al, ah
mov word [ebp - 0x408], ax
mov esi, dword [ebp - 0x3f4]
cmp word [ebp - 0x3f8], si
jbe 0x700f71f3
movzx esi, word [ebp - 0x408]
mov ebx, esi
cmp esi, 0x28
jbe 0x700f7097
mov ebx, 0x28
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edx
jne 0x700f70b1
mov ecx, dword [ebp + 8]
call fcn.7015bc28
mov ebx, eax
lea edi, [ebp - 0x134]
mov dword [esp + 4], ebx
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
mov ecx, 0x28
push eax
sub ecx, ebx
add ebx, edi
push eax
mov edi, ebx
xor eax, eax
rep stosb byte es:[edi], al
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call fcn.700a905c
lea edx, [ebp - 0x134]
push eax
lea eax, [ebp - 0x388]
mov dword [esp + 0xc], 0x28
mov dword [esp + 8], edx
mov dword [esp + 4], 2
mov dword [esp], eax
call method.OpenMPT::mpt::String::detail.ReadStringBuffer_abi:cxx11__OpenMPT::mpt::String::ReadWriteMode__char_const__unsigned_int_
mov eax, dword [ebp - 0x3f0]
mov edi, dword [ebp - 0x3f4]
lea ebx, [ebp - 0x388]
lea ecx, [ebp - 0x2a0]
mov eax, dword [eax + edi*4 + 0xdbd20]
mov dword [esp], ebx
mov dword [ebp - 0x404], eax
add eax, 0x1ec
mov dword [ebp - 0x2a0], eax
mov dword [ebp - 0x29c], 0x20
call method.mpt::mpt_libopenmpt::StringBufRefImpl_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char_.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__
mov eax, dword [ebp - 0x3f0]
mov esi, dword [ebp - 0x3f4]
lea ecx, [ebp - 0x2a0]
mov eax, dword [eax + esi*4 + 0xdbd20]
mov dword [esp], eax
call method.OpenMPT::ModInstrument.GetSamples___const
mov edx, dword [ebp - 0x294]
push eax
lea ebx, [ebp - 0x29c]
cmp edx, ebx
je 0x700f71d3
mov edi, dword [ebp - 0x3f4]
mov eax, dword [ebp - 0x3f0]
mov ecx, 8
mov eax, dword [eax + edi*4 + 0xdbd20]
mov dword [ebp - 0x404], eax
movzx eax, word [edx + 0x10]
add eax, 0x7384
mov edi, dword [ebp - 0x404]
shl eax, 5
add eax, dword [ebp - 0x3f0]
lea esi, [edi + 0x1ec]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov dword [esp], edx
call method.std._Rb_tree_increment_std::_Rb_tree_node_base_const_
mov edx, eax
jmp 0x700f7183
mov eax, dword [ebp - 0x298]
lea ecx, [ebp - 0x2a0]
mov dword [esp], eax
call method.std::_Rb_tree_unsigned_short__unsigned_short__std::_Identity_unsigned_short___std::less_unsigned_short___std::allocator_unsigned_short___._M_erase_std::_Rb_tree_node_unsigned_short__
inc dword [ebp - 0x3f4]
push edi
jmp 0x700f7071
mov eax, dword [ebp - 0x3f0]
lea ecx, [eax + 0xdc11c]
call method.OpenMPT::MIDIMacroConfig.ClearZxxMacros__
mov eax, dword [ebp - 0x3f0]
lea ecx, [eax + 0xdc23c]
mov dword [eax + 0xdc23c], 0x7a206343
mov byte [eax + 0xdc240], 0
call method.OpenMPT::MIDIMacroConfigData::Macro.Sanitize__
mov eax, dword [ebp + 8]
mov dword [ebp - 0x420], 0
mov dword [eax + 8], 0
mov word [ebp - 0x3f8], 0
mov bl, byte [ebp - 0x420]
mov al, byte [ebp - 0x3f6]
cmp bl, al
jae 0x700f8b0a
lea eax, [ebp - 0x250]
lea ecx, [ebp - 0x2f0]
mov dword [esp], eax
lea edx, [ebp - 0x358]
mov eax, dword [ebp + 8]
call sym.__ZN7OpenMPTL15MEDReadNextSongERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataENS4_24FileCursorFile
test bl, bl
jne 0x700f72df
imul eax, dword [ebp - 0x420], 0x2c
mov esi, dword [ebp - 0x3f0]
mov dword [ebp - 0x384], 0
mov dword [ebp - 0x380], 0
mov dword [ebp - 0x374], 0
add eax, dword [esi + 0x76408]
mov dword [ebp - 0x3f4], eax
lea eax, [ebp - 0x384]
mov dword [ebp - 0x37c], eax
mov dword [ebp - 0x378], eax
mov eax, dword [ebp - 0x3f4]
mov edi, dword [ebp - 0x3f4]
mov eax, dword [eax]
cmp eax, dword [edi + 4]
je 0x700f72f9
mov esi, dword [ebp - 0x3f4]
mov dword [esi + 4], eax
jmp 0x700f72f9
mov eax, dword [ebp - 0x3f0]
lea ecx, [eax + 0x76408]
call method.OpenMPT::ModSequenceSet.AddSequence__
inc al
jne 0x700f7278
jmp 0x700f8d1f
cmp byte [ebp - 0x3e7], 1
ja 0x700f742f
movzx ebx, word [ebp - 0x24e]
xchg bl, bh
cmp bx, 0x100
ja 0x700f8afa
lea edi, [ebp - 0x134]
lea esi, [ebp - 0x24c]
mov ecx, 0x40
mov word [ebp - 0x3e6], 0xffff
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x3f4]
movzx ebx, bx
mov ecx, dword [edi + 4]
mov edx, ecx
sub edx, eax
sar edx, 1
cmp ebx, edx
jbe 0x700f736d
lea eax, [ebp - 0x3e6]
mov dword [esp], ecx
mov dword [esp + 8], eax
mov eax, ebx
sub eax, edx
mov ecx, edi
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 0x700f7381
jae 0x700f7381
lea edx, [ebx + ebx]
add eax, edx
cmp ecx, eax
je 0x700f7381
mov esi, dword [ebp - 0x3f4]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x3f4]
xor edx, edx
mov esi, dword [eax + 4]
mov eax, dword [eax]
mov ecx, esi
sub ecx, eax
sar ecx, 1
cmp ebx, edx
jle 0x700f73bf
movzx edi, byte [edx + ebp - 0x134]
cmp ecx, edx
ja 0x700f73b8
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], 0x702b1963
call method.std.__throw_out_of_range_fmt_char_const__..._
mov word [eax + edx*2], di
inc edx
jmp 0x700f7394
cmp eax, esi
je 0x700f73d1
mov edi, dword [ebp - 0x3f8]
add word [eax], di
add eax, 2
jmp 0x700f73bf
mov dword [esp], 1
mov ecx, dword [ebp - 0x3f0]
call method.OpenMPT::CSoundFile.SetupMODPanning_bool_
mov eax, dword [ebp - 0x3f0]
push esi
mov cx, word [eax + 0x753bc]
cmp cx, 0x10
jbe 0x700f73fc
mov ecx, 0x10
xor eax, eax
cmp cx, ax
jbe 0x700f7a99
movzx edx, byte [ebp + eax - 0x146]
mov ebx, eax
shl ebx, 5
cmp dl, 0x40
jbe 0x700f741e
mov edx, 0x40
mov esi, dword [ebp - 0x3f0]
inc eax
mov word [esi + ebx + 0x7541e], dx
jmp 0x700f73fe
mov eax, dword [ebp - 0x24c]
mov esi, dword [ebp - 0x244]
movzx edx, word [ebp - 0x240]
mov dword [ebp - 0x418], eax
mov eax, dword [ebp - 0x248]
xchg dl, dh
mov dword [ebp - 0x408], eax
dec edx
mov ax, word [ebp - 0x23e]
mov word [ebp - 0x40c], ax
mov edi, dword [ebp - 0x23c]
mov ebx, dword [ebp - 0x238]
mov eax, dword [ebp - 0x234]
cmp dx, 0x3f
ja 0x700f8afa
mov edx, dword [ebp - 0x3f0]
cmp word [edx + 0x753bc], 0x40
ja 0x700f8afa
bswap ebx
xchg al, ah
and ebx, 2
test ax, ax
jne 0x700f74ad
mov dword [ebp - 0x404], 0x20
jmp 0x700f74ec
cmp ax, 0x320
jbe 0x700f74b8
mov eax, 0x320
movzx eax, ax
xor edx, edx
mov dword [esp + 8], 0x64
shld edx, eax, 5
shl eax, 5
mov dword [esp + 0xc], 0
add eax, 0x32
adc edx, 0
mov dword [esp], eax
mov dword [esp + 4], edx
call dbg.__udivdi3
mov dword [ebp - 0x404], eax
test ebx, ebx
je 0x700f74f6
shr dword [ebp - 0x404], 1
bswap esi
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ebx
je 0x700f7543
xor ebx, ebx
mov eax, dword [ebp - 0x3f0]
cmp word [eax + 0x753bc], bx
jbe 0x700f7543
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadUint8IN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCursor
movzx edx, bx
shl edx, 5
add edx, dword [ebp - 0x3f0]
cmp al, 0x40
jbe 0x700f7536
mov al, 0x40
movzx eax, al
mov word [edx + 0x7541e], ax
inc ebx
jmp 0x700f750a
bswap edi
test edi, edi
jne 0x700f7561
mov dword [esp], 1
mov ecx, dword [ebp - 0x3f0]
call method.OpenMPT::CSoundFile.SetupMODPanning_bool_
push ecx
jmp 0x700f75ea
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f7549
xor ebx, ebx
mov eax, dword [ebp - 0x3f0]
cmp word [eax + 0x753bc], bx
jbe 0x700f75ea
lea eax, [ebp - 0x134]
mov dword [esp + 4], 1
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push edi
xor eax, eax
push edi
dec edx
jne 0x700f75b9
mov dword [esp], 1
mov ecx, dword [ebp + 8]
call fcn.700a905c
movsx eax, byte [ebp - 0x134]
push esi
movzx edx, bx
shl edx, 5
add edx, dword [ebp - 0x3f0]
cmp al, 0x10
jle 0x700f75d0
mov eax, 0x10
jmp 0x700f75d9
cmp al, 0xf0
jge 0x700f75d9
mov eax, 0xfffffff0
lea eax, [eax*8 + 0x80]
inc ebx
mov word [edx + 0x7541c], ax
jmp 0x700f7573
mov eax, dword [ebp - 0x408]
mov ecx, dword [ebp + 8]
bswap eax
mov dword [esp], eax
mov dword [ebp - 0x324], 0
mov dword [ebp - 0x320], 0
mov dword [ebp - 0x31c], 0
call fcn.700a9020
test al, al
push ecx
je 0x700f76e4
movzx eax, word [ebp - 0x24e]
xchg al, ah
movzx eax, ax
add eax, eax
mov ecx, dword [ebp + 8]
mov dword [esp], eax
call fcn.7015bbf8
test al, al
push edx
je 0x700f76e4
movzx eax, word [ebp - 0x24e]
mov esi, dword [ebp - 0x320]
mov edx, dword [ebp - 0x324]
mov ecx, esi
xchg al, ah
sub ecx, edx
movzx eax, ax
sar ecx, 1
cmp eax, ecx
lea ebx, [eax + eax]
jbe 0x700f767e
sub eax, ecx
lea ecx, [ebp - 0x324]
mov dword [esp], eax
call method.std::vector_mpt::mpt_libopenmpt.packed_unsigned_short___mpt::mpt_libopenmpt::endian_305419896__unsigned_short___std::allocator_mpt::mpt_libopenmpt::packed_unsigned_short___mpt::mpt_libopenmpt::endian_305419896__unsigned_short_____::_M_default_appen
push edi
jmp 0x700f768c
jae 0x700f768c
add edx, ebx
cmp esi, edx
je 0x700f768c
mov dword [ebp - 0x320], edx
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push esi
je 0x700f76e4
mov edx, dword [ebp - 0x324]
mov eax, dword [ebp - 0x320]
sub eax, edx
mov dword [esp], edx
mov dword [esp + 4], eax
mov ecx, dword [ebp + 8]
call fcn.700a9094
mov eax, dword [ebp - 0x320]
push ebx
mov dword [ebp - 0x414], eax
mov eax, dword [ebp - 0x324]
mov dword [ebp - 0x408], eax
mov eax, dword [ebp - 0x40c]
xchg al, ah
push ebx
mov word [ebp - 0x424], ax
jmp 0x700f7709
lea ecx, [ebp - 0x324]
call method.std::_Vector_base_mpt::mpt_libopenmpt.packed_unsigned_short___mpt::mpt_libopenmpt::endian_305419896__unsigned_short___std::allocator_mpt::mpt_libopenmpt::packed_unsigned_short___mpt::mpt_libopenmpt::endian_305419896__unsigned_short_____::_Vector_b
jmp 0x700f8ad7
movzx eax, word [edi]
xchg al, ah
cmp ax, word [ebp - 0x424]
jbe 0x700f771c
add dword [ebp - 0x408], 2
mov edi, dword [ebp - 0x408]
cmp dword [ebp - 0x414], edi
jne 0x700f76f4
jmp 0x700f7a8c
mov edx, dword [ebp - 0x418]
mov ecx, dword [ebp + 8]
movzx eax, ax
bswap edx
lea eax, [edx + eax*4]
mov dword [esp], eax
call fcn.700a9020
mov eax, dword [ebp + 8]
push ecx
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f7702
mov dword [esp], 0x2a
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edi
je 0x700f7702
lea eax, [ebp - 0x134]
mov dword [esp + 4], 0x2a
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push esi
cmp edx, 0x2a
push esi
jne 0x700f7797
mov dword [esp], 0x2a
mov ecx, dword [ebp + 8]
call fcn.700a905c
push ebx
jmp 0x700f77a6
lea edi, [ebp - 0x134]
mov ecx, 0x2a
xor eax, eax
rep stosb byte es:[edi], al
mov eax, dword [ebp - 0x3f4]
mov edi, dword [eax]
cmp dword [eax + 4], edi
je 0x700f77c2
mov dword [esp], 0xfffe
mov ecx, eax
call method.OpenMPT::ModSequence.push_back_unsigned_short_
push ecx
mov eax, dword [ebp - 0x3f4]
mov esi, dword [ebp - 0x3f4]
movzx ebx, word [ebp - 0x10c]
mov eax, dword [eax + 4]
xchg bl, bh
sub eax, dword [esi]
mov ecx, dword [ebp + 8]
movzx ebx, bx
sar eax, 1
mov dword [esp], ebx
mov dword [ebp - 0x40c], eax
call fcn.7015bbf8
test al, al
push edx
jne 0x700f7805
mov ecx, dword [ebp + 8]
call fcn.7015bc28
cmp ebx, eax
jbe 0x700f7805
mov ebx, eax
cmp ebx, 0xfffe
jbe 0x700f7812
mov ebx, 0xfffe
mov eax, dword [ebp - 0x40c]
add eax, ebx
cmp eax, 0x3fffffff
jbe 0x700f782d
mov dword [esp], 0x702b19ad
call method.std.__throw_length_error_char_const_
mov edi, dword [ebp - 0x3f4]
mov esi, edi
mov ecx, dword [edi]
mov edi, dword [edi + 8]
mov edx, edi
mov dword [ebp - 0x410], edi
sub edx, ecx
sar edx, 1
cmp eax, edx
jbe 0x700f78bb
mov edi, dword [esi + 4]
lea esi, [eax + eax]
sub edi, ecx
mov dword [ebp - 0x410], esi
test eax, eax
je 0x700f7868
mov dword [esp], esi
call sym.operator_new_unsigned_int_
mov esi, eax
jmp 0x700f786a
xor esi, esi
mov eax, dword [ebp - 0x3f4]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x41c], eax
sub eax, ecx
test eax, eax
jle 0x700f7891
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov dword [esp], esi
call sym._memmove
mov eax, dword [ebp - 0x3f4]
mov eax, dword [eax]
test eax, eax
je 0x700f78a5
mov dword [esp], eax
call sym.operator_delete_void_
mov eax, dword [ebp - 0x3f4]
add edi, esi
mov dword [eax], esi
add esi, dword [ebp - 0x410]
mov dword [eax + 4], edi
mov dword [eax + 8], esi
xor esi, esi
cmp esi, ebx
je 0x700f78ec
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
test ax, ax
js 0x700f78e9
add eax, dword [ebp - 0x3f8]
mov ecx, dword [ebp - 0x3f4]
movzx eax, ax
mov dword [esp], eax
call method.OpenMPT::ModSequence.push_back_unsigned_short_
push edi
inc esi
jmp 0x700f78bd
cmp byte [ebp - 0x134], 0
je 0x700f7945
lea eax, [ebp - 0x134]
lea ebx, [ebp - 0x370]
mov dword [ebp - 0x2a0], eax
lea eax, [ebp - 0x2a0]
mov dword [esp + 8], eax
mov eax, dword [0x702c9620]
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [ebp - 0x29c], 0x20
call fcn.700b1508
mov eax, dword [ebp - 0x3f4]
mov dword [esp], ebx
lea ecx, [eax + 0xc]
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
push ecx
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__
mov eax, dword [ebp - 0x114]
bswap eax
test eax, eax
je 0x700f7702
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f7702
lea eax, [ebp - 0x370]
mov dword [esp + 4], 4
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 4
push eax
jne 0x700f7702
mov dword [esp], 4
mov ecx, dword [ebp + 8]
call fcn.700a905c
push eax
lea ebx, [ebp - 0x3b0]
movzx eax, byte [ebp - 0x36d]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov ecx, ebx
call fcn.700a90e0
push esi
lea ecx, [ebp - 0x2a0]
push esi
mov dword [esp], ebx
call fcn.700a9354
mov ecx, ebx
push edi
call fcn.700aa2c4
movzx edx, word [ebp - 0x370]
xchg dl, dh
movzx eax, dx
add eax, dword [ebp - 0x40c]
cmp eax, 0xffff
jbe 0x700f79f1
mov eax, 0xffff
inc dx
mov word [ebp - 0x39c], ax
je 0x700f7a2a
mov edi, dword [ebp - 0x3f4]
mov ecx, dword [edi]
mov edi, dword [edi + 4]
mov edx, edi
mov dword [ebp - 0x410], edi
sub edx, ecx
sar edx, 1
cmp edx, eax
jbe 0x700f7a2a
mov dl, byte [ebp - 0x36e]
cmp dl, 1
jne 0x700f7a3a
mov word [ecx + eax*2], 0xffff
jmp 0x700f7a7c
lea ecx, [ebp - 0x2a0]
call fcn.700aa2c4
jmp 0x700f7702
cmp dl, 2
jne 0x700f7a7c
lea esi, [ebp - 0x2a0]
mov dword [esp], esi
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov ebx, eax
lea eax, [ebp - 0x39c]
mov dword [esp], eax
lea ecx, [ebp - 0x388]
call method.std::map_unsigned_short__unsigned_short__std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__unsigned_short_____.operator___unsigned_short_const_
push ecx
mov word [eax], bx
mov eax, dword [ebp - 0x3f4]
movzx edx, word [ebp - 0x39c]
mov eax, dword [eax]
mov word [eax + edx*2], 0xfffe
lea ecx, [ebp - 0x2a0]
call fcn.700aa2c4
jmp 0x700f7969
lea ecx, [ebp - 0x324]
call method.std::_Vector_base_mpt::mpt_libopenmpt.packed_unsigned_short___mpt::mpt_libopenmpt::endian_305419896__unsigned_short___std::allocator_mpt::mpt_libopenmpt::packed_unsigned_short___mpt::mpt_libopenmpt::endian_305419896__unsigned_short_____::_Vector_b
jmp 0x700f7aa3
mov dword [ebp - 0x404], 0x20
mov al, byte [ebp - 0x149]
mov bl, byte [ebp - 0x148]
mov dl, al
and edx, 0x10
mov byte [ebp - 0x43e], dl
mov dl, bl
and edx, 0x1f
inc edx
movzx esi, dl
xor edx, edx
and bl, 0x20
setne dl
shr al, 6
mov dword [ebp - 0x434], edx
and eax, 1
mov dword [esp], esi
mov dword [ebp - 0x438], eax
mov ecx, edx
movzx eax, word [ebp - 0x14c]
mov edx, dword [ebp - 0x438]
xchg al, ah
movzx eax, ax
mov dword [ebp - 0x41c], esi
call method.OpenMPT.MMDTempoToBPM_unsigned_int__bool__bool__unsigned_char_
mov esi, dword [ebp - 0x3f0]
mov dword [esi + 0x753cc], eax
movzx eax, byte [ebp - 0x147]
cmp al, 0x20
jbe 0x700f7b1d
mov eax, 0x20
jmp 0x700f7b26
test al, al
jne 0x700f7b26
mov eax, 1
mov edi, dword [ebp - 0x3f0]
test bl, bl
mov dword [edi + 0x753c4], eax
je 0x700f7b4d
mov esi, dword [ebp - 0x41c]
mov eax, esi
mov dword [edi + 0x753d8], esi
shl eax, 2
mov dword [edi + 0x753dc], eax
movzx eax, byte [ebp - 0x136]
test al, al
je 0x700f7b70
cmp al, 0x40
jbe 0x700f7b61
mov eax, 0x40
shl eax, 2
mov esi, dword [ebp - 0x3f0]
mov dword [esi + 0x753c8], eax
mov eax, dword [ebp - 0x3f0]
mov edi, dword [ebp - 0x404]
mov edx, dword [eax + 0x753d0]
mov dword [eax + 0x753e8], edi
mov dword [eax + 0x753e4], edi
mov eax, edx
and eax, 0xfffffffd
test byte [ebp - 0x149], 0x20
jne 0x700f7ba1
mov eax, edx
or eax, 2
mov edi, dword [ebp - 0x3f0]
mov dword [edi + 0x753d0], eax
mov eax, dword [ebp - 0x2c4]
bswap eax
test eax, eax
je 0x700f7c9a
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f7c9a
mov eax, dword [ebp - 0x2c0]
mov esi, dword [ebp - 0x3f0]
bswap eax
lea ebx, [esi + 0x13cfa8]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.7011e924
cmp byte [ebp - 0x3f6], 1
je 0x700f7c9a
lea esi, [ebp - 0x2a0]
mov dword [esp], ebx
mov ecx, esi
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea ebx, [ebp - 0x134]
push eax
lea eax, [ebp - 0x370]
mov dword [esp + 4], esi
mov dword [esp], eax
mov ecx, ebx
mov dword [ebp - 0x370], 0x1c
call method.std::__cxx11::basic_string_char32_t__std::char_traits_char32_t___std::allocator_char32_t____OpenMPT::mpt::CharsetTranscoder::decode_std::__cxx11::basic_string_char__std::char_traits_char___std.allocator_char______std::__cxx11::basic_string_char__st
push eax
push eax
lea eax, [ebp - 0x324]
mov dword [esp + 8], 0x3f
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt11encode_utf8INSt7__cxx1112basic_stringIcNS0_20encoding_char_traitsILNS0_15common_encodingE0ES5_EESaIc
mov ecx, ebx
lea ebx, [ebp - 0x324]
call method.std::__cxx11::basic_string_char32_t__std::char_traits_char32_t___std::allocator_char32_t___._M_dispose__
mov ecx, esi
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
mov eax, dword [ebp - 0x3f4]
mov dword [esp], ebx
lea ecx, [eax + 0xc]
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
mov ecx, ebx
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__
jmp 0x700f7c9a
mov eax, dword [ebp - 0x2e0]
bswap eax
cmp eax, 1
jbe 0x700f7cee
mov eax, dword [ebp - 0x2e4]
mov ecx, dword [ebp + 8]
bswap eax
mov dword [esp], eax
call fcn.700a9020
test al, al
push edi
je 0x700f7cee
mov eax, dword [ebp - 0x2e0]
mov edi, dword [ebp - 0x3f0]
bswap eax
dec eax
lea ecx, [edi + 0x13cfd8]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp + 8], 4
mov dword [esp], eax
call sym.__ZN7OpenMPT11SongMessage4ReadERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataENS5_24FileCursorFile
sub esp, 0xc
mov eax, dword [ebp - 0x2b8]
bswap eax
test eax, eax
je 0x700f7e62
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push esi
je 0x700f7e62
mov dword [esp], 0xc
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push ebx
je 0x700f7e62
mov dword [esp], 6
mov ecx, dword [ebp + 8]
call fcn.700a905c
mov eax, dword [ebp + 8]
push ecx
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEItN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
dec ax
jne 0x700f7e62
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov ebx, eax
test eax, eax
je 0x700f7e62
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edx
je 0x700f7e62
mov eax, dword [ebp - 0x3f0]
lea ecx, [ebp - 0x370]
lea esi, [eax + 0x13cfd8]
mov dword [esp], esi
call fcn.701fca00
mov eax, dword [ebp + 8]
mov ecx, esi
push edi
mov dword [esp + 8], 4
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym.__ZN7OpenMPT11SongMessage4ReadERNS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO24FileCursorTraitsFileDataENS5_24FileCursorFile
sub esp, 0xc
cmp dword [ebp - 0x36c], 0
je 0x700f7e57
lea eax, [ebp - 0x31c]
mov dword [esp + 4], 0xd
mov dword [esp], 2
lea ecx, [ebp - 0x324]
mov dword [ebp - 0x324], eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_construct_unsigned_int__char_
push ebx
lea eax, [ebp - 0x370]
push ebx
lea ecx, [ebp - 0x324]
mov dword [esp + 4], eax
mov dword [esp], 0
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.insert_unsigned_int__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
push edx
lea ecx, [ebp - 0x2a0]
push edx
mov dword [esp], eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
push ecx
lea ecx, [ebp - 0x2a0]
mov dword [esp], esi
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.append_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea ebx, [ebp - 0x134]
push edi
mov dword [esp], eax
mov ecx, ebx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov ecx, esi
push eax
mov dword [esp], ebx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.assign_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov ecx, ebx
push eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea ecx, [ebp - 0x2a0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea ecx, [ebp - 0x324]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea ecx, [ebp - 0x370]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
cmp byte [ebp - 0x3e7], 1
jbe 0x700f7fa6
cmp dword [ebp - 0x2ac], 0
je 0x700f7fa6
xor ebx, ebx
mov eax, dword [ebp - 0x3f0]
cmp word [eax + 0x753bc], bx
jbe 0x700f7fa6
mov eax, dword [ebp - 0x2ac]
mov ecx, dword [ebp + 8]
bswap eax
movzx edx, bx
lea eax, [eax + edx*4]
mov dword [esp], eax
call fcn.700a9020
test al, al
push esi
je 0x700f7fa0
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ecx
je 0x700f7fa0
xor esi, esi
xor edi, edi
mov dword [esp], 8
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edx
je 0x700f7f62
lea eax, [ebp - 0x134]
mov dword [esp + 4], 8
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 8
push eax
jne 0x700f7f1c
mov dword [esp], 8
mov ecx, dword [ebp + 8]
call fcn.700a905c
push ecx
jmp 0x700f7f30
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0
mov eax, dword [ebp - 0x134]
bswap eax
test eax, eax
je 0x700f7f62
and eax, 0x1fffffff
cmp eax, 1
je 0x700f7f55
cmp eax, 2
jne 0x700f7ed6
mov esi, dword [ebp - 0x130]
bswap esi
jmp 0x700f7ed6
mov edi, dword [ebp - 0x130]
bswap edi
jmp 0x700f7ed6
test edi, edi
je 0x700f7fa0
test esi, esi
je 0x700f7fa0
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f7fa0
movzx eax, bx
shl eax, 5
mov dword [esp + 8], esi
mov esi, dword [ebp - 0x3f0]
lea eax, [esi + eax + 0x75421]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN7OpenMPT13FileReaderExt10ReadStringILNS_3mpt6String13ReadWriteModeE2ELj20ENS_6detail10FileReaderIN3mpt14mpt_libopenmpt2IO2
inc ebx
jmp 0x700f7e7e
movzx eax, word [ebp - 0x250]
mov edi, dword [ebp - 0x3f8]
xchg al, ah
not edi
cmp di, ax
mov word [ebp - 0x408], di
jbe 0x700f7fca
mov word [ebp - 0x408], ax
mov eax, dword [ebp - 0x3f0]
add eax, 0x763f8
mov dword [ebp - 0x428], eax
mov eax, dword [ebp - 0x3f8]
add eax, dword [ebp - 0x408]
mov ecx, dword [ebp - 0x428]
movzx eax, ax
mov dword [esp], eax
call method.OpenMPT::CPatternContainer.ResizeArray_unsigned_short_
movzx eax, word [ebp - 0x3f8]
push edi
mov dword [ebp - 0x444], eax
mov dword [ebp - 0x414], 0
mov eax, dword [ebp - 0x414]
cmp word [ebp - 0x408], ax
mov word [ebp - 0x40c], ax
jbe 0x700f8987
test byte [ebp + 0xc], 1
je 0x700f897c
mov eax, dword [ebp - 0x348]
mov esi, dword [ebp - 0x414]
bswap eax
mov ecx, dword [ebp + 8]
lea eax, [eax + esi*4]
mov dword [esp], eax
call fcn.700a9020
test al, al
push esi
je 0x700f897c
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ebx
je 0x700f897c
movsx ebx, byte [ebp - 0x14a]
lea eax, [ebp - 0x298]
lea ecx, [ebp - 0x370]
mov dword [ebp - 0x2a0], eax
lea eax, [ebx + 0x30]
mov dword [ebp - 0x29c], 0
mov byte [ebp - 0x298], 0
mov dword [ebp - 0x42c], eax
call fcn.700a9cb4
mov al, byte [ebp - 0x3e7]
test al, al
jne 0x700f810f
lea eax, [ebp - 0x134]
mov dword [esp + 4], 2
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push ecx
cmp edx, 2
push ecx
jne 0x700f80ec
mov dword [esp], 2
mov ecx, dword [ebp + 8]
call fcn.700a905c
push eax
jmp 0x700f80f5
mov word [ebp - 0x134], 0
movzx eax, byte [ebp - 0x133]
inc eax
movzx ebx, byte [ebp - 0x134]
mov dword [ebp - 0x410], eax
jmp 0x700f82bb
cmp al, 2
jbe 0x700f811c
lea eax, [ebx + 0x18]
mov dword [ebp - 0x42c], eax
lea eax, [ebp - 0x3b0]
mov dword [esp + 4], 8
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 8
push eax
jne 0x700f814e
mov dword [esp], 8
mov ecx, dword [ebp + 8]
call fcn.700a905c
push eax
jmp 0x700f8162
mov dword [ebp - 0x3b0], 0
mov dword [ebp - 0x3ac], 0
movzx eax, word [ebp - 0x3b0]
mov ebx, eax
movzx eax, word [ebp - 0x3ae]
xchg bl, bh
xchg al, ah
movzx eax, ax
inc eax
mov dword [ebp - 0x410], eax
mov eax, dword [ebp - 0x3ac]
bswap eax
test eax, eax
je 0x700f82bb
mov edi, dword [ebp + 8]
mov ecx, edi
mov esi, dword [edi + 8]
mov dword [esp], eax
mov dword [ebp - 0x404], esi
call fcn.700a9020
push eax
lea eax, [ebp - 0x134]
mov dword [esp], eax
mov dword [esp + 4], 0x24
mov ecx, dword [ebp + 8]
call sym.__ZNK3mpt14mpt_libopenmpt2IO10FileCursorINS1_24FileCursorTraitsFileDataENS1_24FileCursorFilenameTraitsINS0_15BasicPathStringIN
push eax
cmp edx, 0x24
push eax
jne 0x700f81d9
mov dword [esp], 0x24
mov ecx, dword [ebp + 8]
call fcn.700a905c
push edi
jmp 0x700f81e8
lea edi, [ebp - 0x134]
mov ecx, 9
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x130]
mov ecx, dword [ebp + 8]
bswap eax
mov dword [esp], eax
call fcn.700a9020
test al, al
push esi
je 0x700f8221
mov eax, dword [ebp - 0x12c]
bswap eax
mov dword [esp + 8], eax
lea eax, [ebp - 0x2a0]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.7011e924
mov eax, dword [ebp - 0x124]
bswap eax
test eax, eax
je 0x700f82a9
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ecx
je 0x700f82a9
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadIntBEIjN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCurso
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push edx
je 0x700f82a9
movzx eax, bx
imul eax, dword [ebp - 0x410]
lea edi, [ebp - 0x39c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov ecx, edi
mov dword [esp], eax
call fcn.700a90e0
push esi
push esi
lea esi, [ebp - 0x324]
mov ecx, esi
mov dword [esp], edi
call fcn.700a9354
lea ecx, [ebp - 0x370]
push eax
mov dword [esp], esi
call fcn.700aa4bc
mov ecx, esi
push eax
call fcn.700aa2c4
mov ecx, edi
call fcn.700aa2c4
mov eax, dword [ebp - 0x404]
mov ecx, dword [ebp + 8]
mov dword [esp], eax
call fcn.700a9020
push ecx
mov eax, dword [ebp - 0x410]
mov ecx, dword [ebp - 0x428]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x40c]
add eax, dword [ebp - 0x3f8]
movzx eax, ax
mov dword [esp], eax
call method.OpenMPT::CPatternContainer.Insert_unsigned_short__unsigned_int_
push edx
test al, al
push edx
je 0x700f8966
mov eax, dword [ebp - 0x444]
mov esi, dword [ebp - 0x3f0]
add eax, dword [ebp - 0x414]
shl eax, 6
add eax, dword [esi + 0x763f8]
mov esi, eax
lea eax, [ebp - 0x2a0]
mov dword [esp], eax
mov ecx, esi
call method.OpenMPT::CPattern.SetName_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
push eax
mov eax, dword [ebp - 0x3f0]
mov eax, dword [eax + 0x753bc]
cmp ax, bx
mov word [ebp - 0x430], ax
jbe 0x700f8339
mov word [ebp - 0x430], bx
mov dword [ebp - 0x404], 0
mov ecx, esi
call method.OpenMPT::CPattern.GetNumChannels___const
mov dword [ebp - 0x424], 0
movzx ebx, ax
imul ebx, dword [ebp - 0x404]
imul ebx, ebx, 6
add ebx, dword [esi]
mov edi, dword [ebp - 0x424]
cmp word [ebp - 0x430], di
jbe 0x700f894e
mov al, byte [ebx + 3]
mov byte [ebp - 0x40c], al
mov al, byte [ebx + 5]
cmp byte [ebp - 0x3e7], 0
mov byte [ebp - 0x43d], al
jne 0x700f8418
mov dword [esp], 3
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edi
lea edx, [ebp - 0x134]
jne 0x700f83ba
mov ecx, 3
mov edi, edx
rep stosb byte es:[edi], al
jmp 0x700f83cf
mov dword [esp], edx
mov dword [esp + 4], 3
mov ecx, dword [ebp + 8]
call fcn.700a9094
push ecx
push ecx
movzx ecx, byte [ebp - 0x134]
mov edx, ecx
xor eax, eax
and dl, 0x3f
je 0x700f83ea
movzx edx, dl
mov eax, dword [ebp - 0x42c]
add eax, edx
mov edx, ecx
movzx edi, byte [ebp - 0x133]
sar edx, 3
sar ecx, 1
and edx, 0x10
and ecx, 0x20
or ecx, edx
mov edx, edi
shr dl, 4
and edi, 0xf
or edx, ecx
mov byte [ebx + 1], dl
mov dl, byte [ebp - 0x132]
jmp 0x700f84c8
mov dword [esp], 4
mov ecx, dword [ebp + 8]
call fcn.7015bbf8
test al, al
push edx
jne 0x700f8438
mov dword [ebp - 0x134], 0
jmp 0x700f8453
lea eax, [ebp - 0x134]
mov dword [esp + 4], 4
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9094
push edi
push edi
mov eax, dword [ebp - 0x134]
mov dword [ebp - 0x418], eax
movzx eax, ah
mov dword [ebp - 0x43c], eax
mov eax, dword [ebp - 0x418]
shr eax, 0x10
mov edi, eax
mov eax, dword [ebp - 0x418]
shr eax, 0x18
mov dword [ebp - 0x448], eax
lea eax, [ebp - 0x370]
mov dword [esp], eax
call sym.__ZN3mpt14mpt_libopenmpt2IO10FileReader9ReadUint8IN7OpenMPT6detail10FileReaderINS1_24FileCursorTraitsFileDataENS1_24FileCursor
mov byte [ebx + 4], al
mov al, byte [ebp - 0x418]
and al, 0x7f
je 0x700f84a8
movzx eax, al
add eax, dword [ebp - 0x42c]
jmp 0x700f84b6
xor eax, eax
cmp byte [ebp - 0x418], 0x80
jne 0x700f84b6
mov byte [ebx], 0xfe
mov dl, byte [ebp - 0x43c]
and edx, 0x3f
mov byte [ebx + 1], dl
mov dl, byte [ebp - 0x448]
cmp eax, 0x54
mov byte [ebx + 5], dl
setg dl
and dl, byte [ebp - 0x42d]
mov byte [ebp - 0x418], dl
jne 0x700f84eb
mov dl, byte [ebp - 0x400]
mov byte [ebp - 0x418], dl
lea edx, [eax - 1]
cmp edx, 0x77
ja 0x700f84f5
mov byte [ebx], al
lea eax, [edi - 4]
mov byte [ebx + 3], 0
cmp al, 0x2a
ja case.0x700f8507.1
movzx eax, al
jmp dword [eax*4 + 0x702b1a00]
movzx ecx, byte [ebx + 5]
mov edx, ecx
mov byte [ebx + 3], 5
sar edx, 3
mov eax, ecx
cmp ecx, 0x7f
jbe 0x700f8527
mov edx, 0xf
shl edx, 4
and eax, 0xf
add eax, eax
cmp al, 0xf
jbe 0x700f86d6
mov al, 0xf
jmp 0x700f86d6
mov al, byte [ebx + 5]
dec eax
cmp al, 0x13
ja case.0x700f8507.4
mov byte [ebx + 3], 0x10
jmp case.0x700f8507.4
cmp byte [ebp - 0x43e], 0
mov byte [ebx + 3], 0xd
mov dl, byte [ebx + 5]
jne 0x700f857c
cmp dl, 0x98
ja 0x700f8587
mov al, dl
mov cl, 0xa
shr al, 4
and edx, 0xf
imul eax, ecx
add eax, edx
jmp 0x700f886e
and edx, 0x7f
inc edx
sar edx, 1
jmp 0x700f865a
mov byte [ebx + 3], 0
jmp case.0x700f8507.4
mov byte [ebx + 3], 0xb
jmp case.0x700f8507.4
movzx eax, byte [ebx + 5]
test al, al
je case.0x700f8507.25
cmp al, 0xf0
ja case.0x700f8507.4
mov byte [ebx + 3], 0x11
cmp al, 2
ja 0x700f85be
mov byte [ebx + 5], 0x70
jmp case.0x700f8507.4
mov edi, dword [ebp - 0x41c]
mov ecx, dword [ebp - 0x434]
mov edx, dword [ebp - 0x438]
mov dword [esp], edi
call method.OpenMPT.MMDTempoToBPM_unsigned_int__bool__bool__unsigned_char_
mov dword [ebp - 0x3fc], 0
mov dword [ebp - 0x400], eax
fild qword [ebp - 0x400]
fdiv dword [0x702b1abc]
fstp qword [esp]
call sym._round
fld dword [0x702b1ad0]
fxch st(1)
fcom st(1)
fnstsw ax
fstp st(1)
sahf
jb 0x700f8614
fstp st(0)
or edx, 0xffffffff
jmp 0x700f8662
fldz
fcomp st(1)
fnstsw ax
sahf
jb 0x700f8623
fstp st(0)
xor edx, edx
jmp 0x700f865a
fnstcw word [ebp - 0x3ea]
mov ax, word [ebp - 0x3ea]
or ah, 0xc
mov word [ebp - 0x3ec], ax
fldcw word [ebp - 0x3ec]
fistp dword [ebp - 0x400]
fldcw word [ebp - 0x3ea]
mov eax, dword [ebp - 0x400]
cmp ax, 0xff
mov edx, eax
ja 0x700f8662
mov byte [ebx + 5], dl
jmp case.0x700f8507.4
movzx eax, dh
cmp byte [ebp - 0x40c], 0x22
mov byte [ebx + 5], al
mov edi, edx
je 0x700f88a8
mov byte [ebp - 0x40c], 0x22
jmp 0x700f88f2
or byte [ebx + 5], 0x80
mov byte [ebx + 3], 0x1f
jmp case.0x700f8507.4
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f869d
mov al, 0xf
or eax, 0x10
jmp 0x700f886e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f86b2
mov al, 0xf
or eax, 0x20
jmp 0x700f886e
mov dl, byte [ebx + 5]
mov byte [ebx + 3], 5
mov cl, dl
shr cl, 4
cmp cl, 0xf
lea eax, [ecx + 1]
jne 0x700f86d0
mov al, 0xf
shl eax, 4
and edx, 0xf
or eax, edx
jmp 0x700f886e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
and eax, 0xf
or eax, 0x50
jmp 0x700f886e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f86fc
mov al, 0xf
or eax, 0x60
jmp 0x700f886e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f8711
mov al, 0xf
or eax, 0xffffffc0
jmp 0x700f886e
mov byte [ebx + 3], 0xa
jmp case.0x700f8507.4
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f872f
mov al, 0xf
or eax, 0xffffffa0
jmp 0x700f886e
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f8744
mov al, 0xf
or eax, 0xffffffb0
jmp 0x700f886e
mov al, byte [ebx + 5]
dec al
js case.0x700f8507.4
mov byte [ebx + 3], 0x1f
jmp 0x700f886e
mov byte [ebx + 3], 0xe
jmp case.0x700f8507.4
mov al, byte [ebx + 5]
mov byte [ebx + 3], 0x13
cmp al, 0xf
jbe 0x700f8776
mov al, 0xf
or eax, 0xffffffe0
jmp 0x700f886e
mov al, byte [ebx + 5]
test al, 0xf0
je 0x700f8794
shr al, 4
mov byte [ebx + 3], 0x13
or eax, 0xffffffd0
jmp 0x700f886e
test al, al
je case.0x700f8507.4
mov byte [ebx + 3], 0x13
or eax, 0xffffff90
jmp 0x700f886e
cmp byte [ebx + 5], 0
jne case.0x700f8507.4
cmp byte [ebx + 4], 0
jne case.0x700f8507.4
mov al, byte [ebx]
dec eax
cmp al, 0x77
ja case.0x700f8507.4
mov byte [ebx + 3], 0x14
mov byte [ebx + 5], 0x9f
jmp case.0x700f8507.4
movzx ecx, byte [ebx + 4]
test cl, cl
je case.0x700f8507.4
movzx eax, byte [ebx + 5]
xor edx, edx
mov byte [ebx + 3], 0x2c
shld edx, eax, 8
shl eax, 8
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov dword [esp + 4], edx
call dbg.__udivdi3
cmp eax, 0xff
jbe 0x700f886e
mov eax, 0xff
jmp 0x700f886e
mov al, byte [ebx + 5]
lea edx, [eax - 0x11]
cmp dl, 0xde
jbe case.0x700f8507.4
add eax, 0xffffff80
mov byte [ebx + 3], 9
movzx eax, al
mov dword [ebp - 0x134], 0xff
lea edx, [eax*8 - 0x380]
lea eax, [ebp - 0x39c]
mov dword [ebp - 0x39c], edx
cmp edx, 0xff
jle 0x700f8857
lea eax, [ebp - 0x134]
cmp dword [eax], 0
mov dword [ebp - 0x324], 0
jg 0x700f886c
lea eax, [ebp - 0x324]
mov eax, dword [eax]
mov byte [ebx + 5], al
jmp case.0x700f8507.4
mov eax, edi
cmp al, 0xf
ja case.0x700f8507.4
movzx eax, byte [ebx + 5]
mov dword [esp + 8], eax
mov eax, edi
movzx eax, al
mov dword [esp + 4], eax
mov dword [esp], ebx
call method.OpenMPT::CSoundFile.ConvertModCommand_OpenMPT::ModCommand__unsigned_char__unsigned_char_
cmp byte [ebp - 0x40c], 0x22
jne 0x700f8934
mov byte [ebp - 0x40c], 0
xor edi, edi
cmp byte [ebx + 3], 0
jne 0x700f88bd
mov al, byte [ebp - 0x43d]
mov byte [ebx + 3], 0x22
mov byte [ebx + 5], al
jmp 0x700f88e9
cmp dword [ebp - 0x404], 0
je 0x700f88e9
mov ecx, esi
call method.OpenMPT::CPattern.GetNumChannels___const
movzx edx, ax
mov eax, dword [ebp - 0x404]
dec eax
imul eax, edx
add eax, dword [ebp - 0x424]
imul eax, eax, 6
add eax, dword [esi]
mov byte [eax + 5], 0xff
cmp byte [ebp - 0x40c], 0
je 0x700f8934
mov eax, dword [ebp - 0x410]
dec eax
cmp eax, dword [ebp - 0x404]
jbe 0x700f8930
mov ecx, esi
call method.OpenMPT::CPattern.GetNumChannels___const
movzx edx, ax
mov eax, dword [ebp - 0x404]
inc eax
imul eax, edx
add eax, dword [ebp - 0x424]
mov dl, byte [ebp - 0x40c]
imul eax, eax, 6
add eax, dword [esi]
mov byte [eax + 3], dl
mov edx, edi
mov byte [eax + 5], dl
jmp 0x700f8934
mov byte [ebx + 5], 0xff
mov al, byte [ebp - 0x418]
inc dword [ebp - 0x424]
add ebx, 6
mov byte [ebp - 0x400], al
jmp 0x700f8363
inc dword [ebp - 0x404]
mov edi, dword [ebp - 0x404]
cmp dword [ebp - 0x410], edi
jne 0x700f8343
lea ecx, [ebp - 0x370]
call fcn.700aa2c4
lea ecx, [ebp - 0x2a0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
inc dword [ebp - 0x414]
jmp 0x700f8010
mov ebx, dword [ebp - 0x37c]
lea eax, [ebp - 0x384]
cmp ebx, eax
je 0x700f8aae
mov ax, word [ebx + 0x10]
test ax, ax
jne 0x700f89b6
movzx eax, word [ebx + 0x10]
movzx edx, word [ebx + 0x12]
inc eax
cmp edx, eax
jne 0x700f89e8
jmp 0x700f8a9f
dec eax
mov ecx, dword [ebp - 0x3f4]
movzx eax, ax
mov dword [esp], eax
call method.OpenMPT::ModSequence.IsValidPat_unsigned_short__const
test al, al
push esi
je 0x700f89a4
mov ax, word [ebx + 0x10]
mov ecx, dword [ebp - 0x3f4]
dec eax
movzx eax, ax
mov dword [esp], eax
call method.OpenMPT::ModSequence.EnsureUnique_unsigned_short_
mov esi, eax
push ecx
jmp 0x700f8a20
mov dword [esp + 4], 0
mov dword [esp], 1
mov ecx, dword [ebp - 0x428]
call method.OpenMPT::CPatternContainer.InsertAny_unsigned_int__bool_
push edx
mov esi, eax
cmp ax, 0xffff
push edx
je 0x700f8a9f
mov eax, dword [ebp - 0x3f4]
movzx edx, word [ebx + 0x10]
mov eax, dword [eax]
mov word [eax + edx*2], si
mov eax, dword [ebp - 0x3f0]
movzx ecx, si
shl ecx, 6
add ecx, dword [eax + 0x763f8]
mov ax, word [ebx + 0x12]
cmp ax, 0xff
jbe 0x700f8a41
mov eax, 0xff
mov byte [ebp - 0x129], al
mov al, byte [ebp - 0x128]
and eax, 0xfffffff8
mov byte [ebp - 0x12a], 0xc
or eax, 1
mov word [ebp - 0x12c], 0xffff
mov byte [ebp - 0x128], al
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x134], 2
dec eax
mov dword [ebp - 0x130], eax
lea eax, [ebp - 0x134]
mov dword [esp], eax
call method.OpenMPT::CPattern.WriteEffect_OpenMPT::EffectWriter_
cmp si, word [ebp - 0x408]
push edi
jb 0x700f8a9f
lea eax, [esi + 1]
mov word [ebp - 0x408], ax
mov dword [esp], ebx
call method.std._Rb_tree_increment_std::_Rb_tree_node_base_
mov ebx, eax
jmp 0x700f898d
mov eax, dword [ebp - 0x2f0]
mov esi, dword [ebp - 0x408]
bswap eax
add word [ebp - 0x3f8], si
test eax, eax
je 0x700f8aed
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call fcn.700a9020
test al, al
push ecx
je 0x700f8aed
lea ecx, [ebp - 0x388]
call method.std::_Rb_tree_unsigned_short__std::pair_unsigned_short_const__unsigned_short___std::_Select1st_std::pair_unsigned_short_const__unsigned_short_____std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__unsigned_short_____._Rb_tre
inc dword [ebp - 0x420]
jmp 0x700f7243
lea ecx, [ebp - 0x388]
call method.std::_Rb_tree_unsigned_short__std::pair_unsigned_short_const__unsigned_short___std::_Select1st_std::pair_unsigned_short_const__unsigned_short_____std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__unsigned_short_____._Rb_tre
jmp 0x700f8b0a
lea ecx, [ebp - 0x388]
call method.std::_Rb_tree_unsigned_short__std::pair_unsigned_short_const__unsigned_short___std::_Select1st_std::pair_unsigned_short_const__unsigned_short_____std::less_unsigned_short___std::allocator_std::pair_unsigned_short_const__unsigned_short_____._Rb_tre
jmp 0x700f8d1f
mov eax, dword [ebp - 0x3f0]
mov dword [esp], 0
lea ecx, [eax + 0x76408]
call method.OpenMPT::ModSequenceSet.SetSequence_unsigned_char_
cmp byte [ebp - 0x400], 0
push edx
jne 0x700f8b9a
mov esi, 1
mov eax, dword [ebp - 0x3f0]
cmp word [eax + 0x753c0], si
jb 0x700f8b8b
movzx eax, si
mov edi, dword [ebp - 0x3f0]
lea edi, [edi + eax*4]
mov ebx, dword [edi + 0xdbd1c]
test ebx, ebx
je 0x700f8b7e
mov eax, dword [ebx + 0x58]
call fcn.701c6e2c
mov eax, dword [ebx + 0x44]
call fcn.701c6e2c
mov eax, dword [ebx + 0x30]
call fcn.701c6e2c
mov dword [esp + 4], 0x22c
mov dword [esp], ebx
call sym.operator_delete_void__unsigned_int_
mov dword [edi + 0xdbd1c], 0
inc esi
jmp 0x700f8b31
mov eax, dword [ebp - 0x3f0]
mov word [eax + 0x753c0], 0
cmp byte [ebp - 0x42e], 0
je 0x700f8bdf
mov dword [esp], str.Synthesized_MED_instruments_are_not_supported.
lea ecx, [ebp - 0x134]
call fcn.701f95a8
push eax
lea eax, [ebp - 0x134]
mov dword [esp + 4], eax
mov dword [esp], 2
mov ecx, dword [ebp - 0x3f0]
call sym.__ZNK7OpenMPT10CSoundFile8AddToLogENS_8LogLevelERKNSt7__cxx1112basic_stringIcN3mpt14mpt_libopenmpt20encoding_char_traitsILNS5_
lea ecx, [ebp - 0x134]
push eax
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 al, byte [ebp - 0x3e7]
mov ebx, str.OctaMED_v5__MMD2_
cmp al, 2
je 0x700f8c25
ja 0x700f8bfb
mov ebx, str.OctaMED_v4__MMD1_
test al, al
jne 0x700f8c25
jmp 0x700f8c0b
mov ebx, 0x702b192d
cmp al, 3
jne 0x700f8c25
mov ebx, str.OctaMED_Soundstudio__MMD3_
jmp 0x700f8c25
mov eax, dword [ebp - 0x3f0]
mov ebx, str.OctaMED_v2.10__MMD0_
cmp word [eax + 0x753bc], 4
ja 0x700f8c25
mov ebx, str.MED_v2__MMD0_
mov dword [esp], str.OctaMED__MMD_
lea ecx, [ebp - 0x134]
call fcn.701f95a8
lea esi, [ebp - 0x324]
push eax
lea eax, [ebp - 0x134]
mov ecx, esi
mov dword [esp], eax
lea edi, [ebp - 0x2a0]
call fcn.701f83c8
lea ecx, [ebp - 0x134]
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 - 0x3e7]
mov dword [esp], esi
mov dword [esp + 4], eax
mov ecx, edi
call fcn.7015a480
mov eax, dword [ebp - 0x3f0]
push ecx
push ecx
mov dword [esp], edi
lea ecx, [eax + 0x13cff0]
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
mov ecx, edi
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 ecx, 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 dword [esp], 0x702b19fc
lea ecx, [ebp - 0x134]
call fcn.701f95a8
push eax
mov eax, dword [ebp - 0x3f0]
mov edi, ebx
lea ecx, [eax + 0x13d008]
lea eax, [ebp - 0x134]
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 - 0x134]
push edx
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__
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, ecx
mov esi, dword [ebp - 0x3f0]
not eax
dec eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
lea ecx, [esi + 0x13d020]
mov eax, dword [esi + 0x13d024]
mov dword [esp], 0
mov dword [esp + 4], eax
call sym.__ZNSt7__cxx1112basic_stringIcN3mpt14mpt_libopenmpt20encoding_char_traitsILNS2_15common_encodingE0ES4_EESaIcEE10_M_replaceEjjP
mov eax, dword [ebp - 0x3f0]
sub esp, 0x10
mov dword [eax + 0x13d068], 0x1c
jmp 0x700f8d26
mov byte [ebp - 0x3f5], 0
mov eax, dword [ebp - 0x3e4]
test eax, eax
je 0x700f8d38
mov dword [esp], eax
call sym.operator_delete_void_
lea ecx, [ebp - 0x3d8]
call fcn.700aa2c4
jmp 0x700f8e09
mov al, byte [ebp - 0x3f5]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 8