Function at 0x701110b0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea edi, [ebp - 0x100]
sub esp, 0x17c
lea esi, [ebp + 0x10]
mov dword [ebp - 0x124], ecx
mov ecx, 6
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x100]
lea edi, [ebp - 0xe0]
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0xfc]
mov word [ebp - 0x108], ax
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0x124]
mov esi, 0x7024e100
mov ecx, 8
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov eax, dword [ebp + 0xc]
and eax, 7
mov dword [ebp - 0x134], eax
mov al, byte [ebp - 0xfa]
mov byte [ebp - 0x13a], al
mov eax, dword [ebp + 8]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [eax + 0x76408]
mov eax, dword [eax + 0x7640c]
mov dword [ebp - 0x10c], eax
sub eax, edx
sar eax, 2
imul eax, eax, 0xba2e8ba3
cmp byte [ebp - 0x13a], al
jb 0x70111172
mov eax, dword [ebp + 8]
mov al, byte [eax + 0x76418]
mov byte [ebp - 0x13a], al
movzx eax, byte [ebp - 0x13a]
mov dword [ebp - 0x144], eax
mov dword [esp], 0x36aa8
imul eax, eax, 0x2c
add eax, edx
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc0], eax
call sym.operator_new_unsigned_int_
mov ebx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064c8]
mov dword [ebx], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064cc]
mov dword [ebx + 4], eax
mov eax, dword [ebp + 8]
fld qword [eax + 0x1064d0]
mov eax, dword [eax + 0x1064d8]
mov dword [ebx + 0x10], eax
mov eax, dword [ebp + 8]
fst qword [ebp - 0x120]
mov eax, dword [eax + 0x1064dc]
mov dword [ebx + 0x14], eax
mov eax, dword [ebp + 8]
fstp qword [ebx + 8]
mov eax, dword [eax + 0x1064e0]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064e4]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064e8]
mov dword [ebx + 0x20], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064ec]
mov dword [ebx + 0x24], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064f0]
mov dword [ebx + 0x28], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1064f4]
mov dword [ebx + 0x2c], eax
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov esi, dword [eax + 0x1064fc]
mov ecx, dword [eax + 0x106500]
mov edx, dword [eax + 0x106504]
mov eax, dword [eax + 0x106508]
mov dword [ebx + 0x40], eax
mov eax, dword [ebp + 8]
mov edi, dword [edi + 0x106514]
mov dword [ebx + 0x34], esi
mov eax, dword [eax + 0x10650c]
mov word [ebp - 0x120], di
mov dword [ebx + 0x44], eax
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov dword [ebx + 0x38], ecx
mov eax, dword [eax + 0x106510]
mov dword [ebx + 0x3c], edx
mov dword [ebx + 0x48], eax
mov eax, dword [ebp - 0x120]
mov word [ebx + 0x4c], ax
mov eax, dword [ebp + 8]
mov edi, dword [edi + 0x1064f8]
mov ecx, pe_nt_image_headers32
mov eax, dword [eax + 0x106518]
mov dword [ebx + 0x30], edi
mov dword [ebx + 0x50], eax
mov eax, dword [ebp + 8]
lea edi, [ebx + 0x66]
lea edx, [ebx + 0x268]
mov eax, dword [eax + 0x10651c]
mov dword [ebx + 0x54], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x106520]
mov dword [ebx + 0x58], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x106524]
mov dword [ebx + 0x5c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x106528]
mov dword [ebx + 0x60], eax
mov eax, dword [ebp + 8]
mov al, byte [eax + 0x10652c]
mov byte [ebx + 0x64], al
mov eax, dword [ebp + 8]
lea esi, [eax + 0x10652e]
add eax, 0x106730
rep movsd dword es:[edi], dword [esi]
lea edi, [ebx + 0x36a68]
mov dword [ebp - 0x120], edi
mov ecx, dword [eax + 0x10]
mov esi, dword [eax]
mov dword [edx + 0x10], ecx
mov ecx, dword [eax + 0x14]
mov dword [edx + 0x14], ecx
mov ecx, dword [eax + 0x18]
mov dword [edx + 0x18], ecx
mov ecx, dword [eax + 0x1c]
mov dword [edx + 0x1c], ecx
mov ecx, dword [eax + 0x20]
mov edi, dword [eax + 4]
mov dword [edx + 0x20], ecx
mov ecx, dword [eax + 0x24]
mov dword [edx], esi
mov dword [edx + 4], edi
mov esi, dword [eax + 8]
mov edi, dword [eax + 0xc]
mov dword [edx + 0x24], ecx
mov ecx, dword [eax + 0x28]
mov dword [edx + 8], esi
mov dword [edx + 0xc], edi
mov dword [edx + 0x28], ecx
lea edi, [edx + 0x2c]
lea esi, [eax + 0x2c]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 0x3c]
lea edi, [edx + 0x70]
mov dword [edx + 0x3c], ecx
mov ecx, dword [eax + 0x40]
mov dword [edx + 0x40], ecx
mov ecx, dword [eax + 0x44]
mov dword [edx + 0x44], ecx
mov ecx, dword [eax + 0x48]
mov dword [edx + 0x48], ecx
mov ecx, dword [eax + 0x4c]
mov dword [edx + 0x4c], ecx
mov ecx, dword [eax + 0x50]
mov dword [edx + 0x50], ecx
mov ecx, dword [eax + 0x54]
mov dword [edx + 0x54], ecx
mov ecx, dword [eax + 0x58]
mov dword [edx + 0x58], ecx
mov ecx, dword [eax + 0x5c]
mov dword [edx + 0x5c], ecx
mov ecx, dword [eax + 0x60]
mov dword [edx + 0x60], ecx
mov ecx, dword [eax + 0x64]
mov dword [edx + 0x64], ecx
mov ecx, dword [eax + 0x68]
mov dword [edx + 0x68], ecx
lea esi, [eax + 0x70]
mov ecx, 0x88
add edx, 0x368
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 0x290]
add eax, 0x368
mov dword [edx - 0xd8], ecx
mov ecx, dword [eax - 0xd4]
mov dword [edx - 0xd4], ecx
mov ecx, dword [eax - 0xd0]
mov dword [edx - 0xd0], ecx
mov ecx, dword [eax - 0xcc]
mov dword [edx - 0xcc], ecx
mov ecx, dword [eax - 0xc8]
mov dword [edx - 0xc8], ecx
mov ecx, dword [eax - 0xc4]
mov dword [edx - 0xc4], ecx
mov ecx, dword [eax - 0xc0]
mov dword [edx - 0xc0], ecx
mov ecx, dword [eax - 0xbc]
mov dword [edx - 0xbc], ecx
mov ecx, dword [eax - 0xb8]
mov dword [edx - 0xb8], ecx
mov ecx, dword [eax - 0xb4]
mov dword [edx - 0xb4], ecx
mov ecx, dword [eax - 0xb0]
mov dword [edx - 0xb0], ecx
mov ecx, dword [eax - 0xac]
mov dword [edx - 0xac], ecx
mov ecx, dword [eax - 0xa8]
mov dword [edx - 0xa8], ecx
mov ecx, dword [eax - 0xa4]
mov dword [edx - 0xa4], ecx
mov ecx, dword [eax - 0xa0]
mov dword [edx - 0xa0], ecx
mov ecx, dword [eax - 0x9c]
mov dword [edx - 0x9c], ecx
mov ecx, dword [eax - 0x98]
mov dword [edx - 0x98], ecx
mov ecx, dword [eax - 0x94]
mov dword [edx - 0x94], ecx
mov ecx, dword [eax - 0x90]
mov word [edx - 0x90], cx
mov cl, byte [eax - 0x8e]
mov byte [edx - 0x8e], cl
mov ecx, dword [eax - 0x8c]
mov dword [edx - 0x8c], ecx
mov ecx, dword [eax - 0x88]
mov word [edx - 0x88], cx
mov cl, byte [eax - 0x86]
mov byte [edx - 0x86], cl
mov ecx, dword [eax - 0x84]
mov dword [edx - 0x84], ecx
mov ecx, dword [eax - 0x80]
mov word [edx - 0x80], cx
mov cl, byte [eax - 0x7e]
mov byte [edx - 0x7e], cl
mov ecx, dword [eax - 0x7c]
mov dword [edx - 0x7c], ecx
mov ecx, dword [eax - 0x78]
mov dword [edx - 0x78], ecx
mov ecx, dword [eax - 0x74]
mov dword [edx - 0x74], ecx
mov ecx, dword [eax - 0x70]
mov dword [edx - 0x70], ecx
mov ecx, dword [eax - 0x6c]
mov dword [edx - 0x6c], ecx
mov ecx, dword [eax - 0x68]
mov word [edx - 0x68], cx
mov cx, word [eax - 0x66]
mov word [edx - 0x66], cx
mov ecx, dword [eax - 0x64]
mov word [edx - 0x64], cx
mov cx, word [eax - 0x62]
mov word [edx - 0x62], cx
mov ecx, dword [eax - 0x60]
mov word [edx - 0x60], cx
mov cx, word [eax - 0x5e]
mov word [edx - 0x5e], cx
mov ecx, dword [eax - 0x5c]
mov word [edx - 0x5c], cx
mov cx, word [eax - 0x5a]
mov word [edx - 0x5a], cx
mov ecx, dword [eax - 0x58]
mov word [edx - 0x58], cx
mov cx, word [eax - 0x56]
mov word [edx - 0x56], cx
mov ecx, dword [eax - 0x54]
mov dword [edx - 0x54], ecx
mov ecx, dword [eax - 0x50]
mov word [edx - 0x50], cx
mov cl, byte [eax - 0x4e]
mov byte [edx - 0x4e], cl
mov cl, byte [eax - 0x4d]
mov byte [edx - 0x4d], cl
mov cl, byte [eax - 0x4c]
mov byte [edx - 0x4c], cl
mov cl, byte [eax - 0x4b]
mov byte [edx - 0x4b], cl
mov cl, byte [eax - 0x4a]
mov byte [edx - 0x4a], cl
mov cl, byte [eax - 0x49]
mov byte [edx - 0x49], cl
mov cl, byte [eax - 0x48]
mov byte [edx - 0x48], cl
mov cl, byte [eax - 0x47]
mov byte [edx - 0x47], cl
mov cl, byte [eax - 0x46]
mov byte [edx - 0x46], cl
mov cl, byte [eax - 0x45]
mov byte [edx - 0x45], cl
mov cl, byte [eax - 0x44]
mov byte [edx - 0x44], cl
mov cl, byte [eax - 0x43]
mov byte [edx - 0x43], cl
mov cl, byte [eax - 0x42]
mov byte [edx - 0x42], cl
mov cl, byte [eax - 0x41]
mov byte [edx - 0x41], cl
mov cl, byte [eax - 0x40]
mov byte [edx - 0x40], cl
mov cl, byte [eax - 0x3f]
mov byte [edx - 0x3f], cl
mov cl, byte [eax - 0x3e]
mov byte [edx - 0x3e], cl
mov cl, byte [eax - 0x3d]
mov byte [edx - 0x3d], cl
mov cl, byte [eax - 0x3c]
mov byte [edx - 0x3c], cl
mov cl, byte [eax - 0x3b]
mov byte [edx - 0x3b], cl
mov cl, byte [eax - 0x3a]
mov byte [edx - 0x3a], cl
mov cl, byte [eax - 0x39]
mov byte [edx - 0x39], cl
mov cl, byte [eax - 0x38]
mov byte [edx - 0x38], cl
mov cl, byte [eax - 0x37]
mov byte [edx - 0x37], cl
mov cl, byte [eax - 0x36]
mov byte [edx - 0x36], cl
mov cl, byte [eax - 0x35]
mov byte [edx - 0x35], cl
mov cl, byte [eax - 0x34]
mov byte [edx - 0x34], cl
mov cl, byte [eax - 0x33]
mov byte [edx - 0x33], cl
mov cl, byte [eax - 0x32]
mov byte [edx - 0x32], cl
mov cl, byte [eax - 0x31]
mov byte [edx - 0x31], cl
mov cl, byte [eax - 0x30]
mov byte [edx - 0x30], cl
mov cl, byte [eax - 0x2f]
mov byte [edx - 0x2f], cl
mov cl, byte [eax - 0x2e]
mov byte [edx - 0x2e], cl
mov cl, byte [eax - 0x2d]
mov byte [edx - 0x2d], cl
mov cl, byte [eax - 0x2c]
mov byte [edx - 0x2c], cl
mov cl, byte [eax - 0x2b]
mov byte [edx - 0x2b], cl
mov cl, byte [eax - 0x2a]
mov byte [edx - 0x2a], cl
mov cl, byte [eax - 0x29]
mov byte [edx - 0x29], cl
mov cl, byte [eax - 0x28]
mov byte [edx - 0x28], cl
mov cl, byte [eax - 0x27]
mov byte [edx - 0x27], cl
mov cl, byte [eax - 0x26]
mov byte [edx - 0x26], cl
mov cl, byte [eax - 0x25]
mov byte [edx - 0x25], cl
mov cl, byte [eax - 0x24]
mov byte [edx - 0x24], cl
mov cl, byte [eax - 0x23]
mov byte [edx - 0x23], cl
mov cl, byte [eax - 0x22]
mov byte [edx - 0x22], cl
mov cl, byte [eax - 0x21]
mov byte [edx - 0x21], cl
mov cl, byte [eax - 0x20]
mov byte [edx - 0x20], cl
mov cl, byte [eax - 0x1f]
mov byte [edx - 0x1f], cl
mov cl, byte [eax - 0x1e]
mov byte [edx - 0x1e], cl
mov cl, byte [eax - 0x1d]
mov byte [edx - 0x1d], cl
mov cl, byte [eax - 0x1c]
mov byte [edx - 0x1c], cl
mov cl, byte [eax - 0x1b]
mov byte [edx - 0x1b], cl
mov cl, byte [eax - 0x1a]
mov byte [edx - 0x1a], cl
mov cl, byte [eax - 0x19]
mov byte [edx - 0x19], cl
mov cl, byte [eax - 0x18]
mov byte [edx - 0x18], cl
mov cl, byte [eax - 0x17]
mov byte [edx - 0x17], cl
mov cl, byte [eax - 0x16]
movzx esi, byte [eax - 0x15]
mov byte [edx - 0x16], cl
mov cl, byte [edx - 0x15]
and ecx, 0xffffff80
and esi, 0x7f
or ecx, esi
mov byte [edx - 0x15], cl
mov ecx, dword [eax - 0x14]
mov dword [edx - 0x14], ecx
mov ecx, dword [eax - 0x10]
mov dword [edx - 0x10], ecx
mov ecx, dword [eax - 4]
fld dword [eax - 0xc]
mov word [edx - 4], cx
mov cl, byte [eax - 2]
fstp dword [edx - 0xc]
fld dword [eax - 8]
mov byte [edx - 2], cl
fstp dword [edx - 8]
cmp edx, dword [ebp - 0x120]
jne 0x701112fe
mov eax, dword [ebp + 8]
mov dword [ebx + 0x36a68], 0
mov dword [ebx + 0x36a6c], 0
mov dword [ebx + 0x36a70], 0
mov edi, dword [eax + 0x13cf34]
sub edi, dword [eax + 0x13cf30]
je 0x7011172b
jns 0x7011171f
call method.std.__throw_bad_alloc__
mov dword [esp], edi
call sym.operator_new_unsigned_int_
mov esi, eax
jmp 0x7011172d
xor esi, esi
add edi, esi
mov eax, dword [ebp + 8]
mov dword [ebx + 0x36a70], edi
mov edi, dword [ebp + 8]
mov eax, dword [eax + 0x13cf30]
mov dword [ebx + 0x36a68], esi
mov edi, dword [edi + 0x13cf34]
mov dword [ebx + 0x36a6c], esi
mov dword [ebp - 0x120], edi
sub edi, eax
je 0x7011176d
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], esi
call sym._memmove
mov eax, dword [ebp + 8]
add esi, edi
mov dword [ebx + 0x36a6c], esi
mov byte [ebx + 0x36aa4], 0
cmp byte [eax + 0x13cf6c], 0
je 0x701118d2
mov esi, dword [ebp + 8]
lea eax, [ebx + 0x36a78]
lea edi, [ebx + 0x36a74]
mov dword [ebx + 0x36a78], 0
mov edx, dword [esi + 0x13cf44]
mov dword [ebx + 0x36a7c], 0
mov dword [ebx + 0x36a80], eax
mov dword [ebx + 0x36a84], eax
mov dword [ebx + 0x36a88], 0
test edx, edx
je 0x70111821
lea ecx, [ebp - 0x50]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp], edx
mov ecx, edi
mov dword [ebp - 0x50], edi
call sym.__ZNSt8_Rb_treeIhSt4pairIKhfESt10_Select1stIS2_ESt4lessIhESaIS2_EE7_M_copyINS8_11_Alloc_nodeEEEPSt13_Rb_tree_nodeIS2_EPKSC_PSt
sub esp, 0xc
mov edx, eax
mov ecx, edx
mov edx, dword [edx + 8]
test edx, edx
jne 0x701117ec
mov dword [ebx + 0x36a80], ecx
mov edx, eax
mov ecx, edx
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x701117fd
mov esi, dword [ebp + 8]
mov dword [ebx + 0x36a84], ecx
mov dword [ebx + 0x36a7c], eax
mov edx, dword [esi + 0x13cf50]
mov dword [ebx + 0x36a88], edx
mov esi, dword [ebp + 8]
lea eax, [ebx + 0x36a90]
lea ecx, [ebx + 0x36a8c]
mov dword [ebx + 0x36a90], 0
mov edx, dword [esi + 0x13cf5c]
mov dword [ebx + 0x36a94], 0
mov dword [ebx + 0x36a98], eax
mov dword [ebx + 0x36a9c], eax
mov dword [ebx + 0x36aa0], 0
test edx, edx
je 0x701118b4
lea esi, [ebp - 0x50]
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp], edx
mov dword [ebp - 0x50], ecx
call sym.__ZNSt8_Rb_treeISt4pairIhjES0_IKS1_fESt10_Select1stIS3_ESt4lessIS1_ESaIS3_EE7_M_copyINS9_11_Alloc_nodeEEEPSt13_Rb_tree_nodeIS3
sub esp, 0xc
mov edx, eax
mov ecx, edx
mov edx, dword [edx + 8]
test edx, edx
jne 0x7011187f
mov dword [ebx + 0x36a98], ecx
mov edx, eax
mov ecx, edx
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x70111890
mov edi, dword [ebp + 8]
mov dword [ebx + 0x36a9c], ecx
mov dword [ebx + 0x36a94], eax
mov edx, dword [edi + 0x13cf68]
mov dword [ebx + 0x36aa0], edx
mov byte [ebx + 0x36aa4], 1
jmp 0x701118d2
lea ecx, [ebp - 0xc0]
mov dword [ebp - 0xbc], ebx
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 0
call method.OpenMPT::GetLengthMemory.Reset__
jmp 0x70111957
mov eax, dword [ebp - 0x144]
lea ecx, [ebp - 0x80]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov esi, dword [ebp - 0xbc]
call method.OpenMPT::RowVisitor.RowVisitor_OpenMPT::CSoundFile_const__unsigned_char_
push ecx
push ecx
mov eax, dword [ebp - 0x10c]
mov edi, dword [ebp - 0x10c]
movzx edx, word [ebp - 0x108]
mov eax, dword [eax + 4]
sub eax, dword [edi]
sar eax, 1
cmp edx, eax
jae 0x701119c0
mov dword [esp], edx
mov ecx, edi
call method.OpenMPT::ModSequence.IsValidPat_unsigned_short__const
mov edi, dword [ebp - 0x108]
test al, al
push edx
lea edx, [edi + 1]
jne 0x701119c0
mov word [ebp - 0x108], dx
mov dword [ebp - 0x110], 0
jmp 0x70111977
mov eax, dword [ebp - 0x110]
mov dword [ebp - 0xe8], 0
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], eax
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0x108]
cmp dword [ebp - 0x134], 7
mov word [esi + 0x48], ax
mov word [esi + 0x4a], ax
mov word [ebp - 0xc8], ax
mov dword [ebp - 0xe4], 0
jne 0x70111af6
cmp dword [ebp - 0x114], 2
mov dword [ebp - 0xe8], 2
jne 0x70111af6
mov eax, dword [ebp - 0x10c]
movzx ecx, word [ebp - 0xf4]
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x108], eax
sub eax, edx
sar eax, 1
cmp ecx, eax
jae 0x70111af6
movzx ebx, word [edx + ecx*2]
mov eax, dword [ebp + 8]
mov dword [esp], ebx
add eax, 0x763f8
mov ecx, eax
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
test al, al
push edi
je 0x70111af6
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0xf8]
shl ebx, 6
add ebx, dword [eax + 0x763f8]
cmp edi, dword [ebx + 0xc]
jae 0x70111af6
mov ecx, ebx
call method.OpenMPT::CPattern.GetNumChannels___const
movzx eax, ax
imul edi, eax
imul edi, edi, 6
mov eax, dword [ebp + 8]
add edi, dword [ebx]
mov ax, word [eax + 0x753bc]
xor ebx, ebx
mov word [ebp - 0x108], ax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0x110], eax
cmp word [ebp - 0x108], bx
jbe 0x70111af6
cmp byte [edi], 0xfd
ja 0x70111ae3
jne 0x70111ac7
mov eax, dword [ebp + 8]
cmp word [eax + 0x753c0], 0
jne 0x70111ae3
mov ecx, edi
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x70111af0
cmp byte [edi + 1], 0
je 0x70111af0
mov ecx, edi
call method.OpenMPT::ModCommand.IsPortamento___const
test al, al
jne 0x70111af0
mov eax, dword [ebp - 0x110]
mov dword [eax + ebx*8], 0xffffffff
add edi, 6
inc ebx
jmp 0x70111aaa
mov eax, dword [ebp + 0xc]
and eax, 1
mov dword [ebp - 0x128], eax
je 0x70111b0f
lea ecx, [esi + 0x36a74]
call sym.__ZNSt8optionalIN7OpenMPT10CSoundFile9PlayState26MIDIMacroEvaluationResultsEE7emplaceIJEEENSt9enable_ifIX18is_constructible_vI
mov byte [ebp - 0x13c], 0
mov dword [ebp - 0x118], 0
mov dword [ebp - 0x148], 0x8000
movzx eax, byte [ebp - 0x13c]
mov dword [esp], esi
mov dword [esp + 4], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.NextRow_OpenMPT::CSoundFile::PlayState__bool__const
push ebx
mov byte [ebp - 0x110], al
cmp dword [ebp - 0x114], 3
push ebx
jne 0x70111b7b
fld qword [ebp - 0xa8]
fcomp qword [ebp - 0xf8]
fnstsw ax
sahf
jb 0x70111b7b
cmp dword [ebp - 0x134], 7
mov byte [ebp - 0xc6], 1
jne 0x70113334
jmp 0x701132e8
mov eax, dword [ebp - 0x10c]
or ebx, 0xffffffff
movzx ecx, word [esi + 0x48]
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x108], eax
sub eax, edx
sar eax, 1
mov edi, ecx
cmp ecx, eax
jae 0x70111ba1
mov bx, word [edx + ecx*2]
mov eax, dword [ebp + 8]
mov word [esi + 0x46], bx
add eax, 0x763f8
mov dword [ebp - 0x108], eax
movzx eax, bx
mov ecx, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
xor eax, 1
inc bx
push ecx
setne dl
test al, dl
je 0x70111be7
cmp dword [ebp - 0x114], 2
jne 0x70111be7
cmp di, word [ebp - 0xf4]
je 0x70111b62
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov dx, word [esi + 0x46]
mov eax, dword [eax + 0x763fc]
sub eax, dword [edi + 0x763f8]
sar eax, 6
cmp dx, ax
jb 0x70111d77
inc dx
mov eax, dword [esi + 0x48]
je 0x70111c2b
mov edi, dword [ebp - 0x10c]
movzx ecx, ax
mov edx, dword [edi + 4]
sub edx, dword [edi]
sar edx, 1
cmp ecx, edx
jae 0x70111c2b
inc eax
mov word [esi + 0x48], ax
jmp 0x70111c42
mov edi, dword [ebp - 0x10c]
mov dx, word [edi + 0x28]
cmp dx, ax
je 0x70111d77
mov word [esi + 0x48], dx
mov eax, dword [ebp - 0x10c]
movzx edi, word [esi + 0x48]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, eax
mov dword [ebp - 0x120], eax
sub edx, ecx
mov ebx, edi
sar edx, 1
mov eax, 0xffff
cmp edi, edx
jae 0x70111c6c
movzx eax, word [ecx + edi*2]
mov word [esi + 0x46], ax
mov word [esi + 0x4a], bx
mov ecx, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
test al, al
push edx
jne 0x70111be7
lea eax, [esi + 0x268]
mov dword [esp + 4], 0
mov dword [ebp - 0x50], eax
mov dword [esp], ebx
movzx eax, byte [ebp - 0x110]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x50]
mov dword [esp + 8], eax
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x4c], 0x100
call method.OpenMPT::RowVisitor.Visit_unsigned_short__unsigned_int__mpt::mpt_libopenmpt::span_OpenMPT::ModChannel_const__const__bool_
sub esp, 0x10
test al, al
je 0x70111be7
cmp dword [ebp - 0x114], 1
jbe 0x70111cfa
lea eax, [esi + 0x30]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
lea eax, [esi + 0x4a]
mov dword [esp], eax
lea ecx, [ebp - 0x80]
call method.OpenMPT::RowVisitor.GetFirstUnvisitedRow_unsigned_short__unsigned_int__bool__const
sub esp, 0xc
test al, al
je 0x70111d77
jmp 0x70111d19
mov eax, dword [esi + 0x48]
mov dword [ebp - 0xd8], 0
cmp dword [ebp - 0x114], 0
mov word [ebp - 0xcc], ax
je 0x70111d77
jmp 0x70111cd4
fld qword [ebp - 0xa8]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x124]
mov dword [esp], eax
fstp qword [ebp - 0xe0]
call method.std::vector_OpenMPT::GetLengthType__std::allocator_OpenMPT::GetLengthType___.push_back_OpenMPT::GetLengthType_const_
push eax
lea ecx, [ebp - 0xc0]
mov eax, dword [esi + 0x30]
mov dword [ebp - 0xd0], eax
mov ax, word [esi + 0x4a]
mov word [ebp - 0xc8], ax
call method.OpenMPT::GetLengthMemory.Reset__
mov edi, dword [ebp - 0x10c]
movzx eax, word [esi + 0x4a]
mov edx, dword [edi]
mov word [esi + 0x48], ax
mov ax, word [edx + eax*2]
mov word [esi + 0x46], ax
mov eax, dword [esi + 0x30]
mov dword [esi + 0x34], eax
cmp word [esi + 0x4a], 0xffff
je 0x701132df
movzx ebx, word [esi + 0x46]
mov ecx, dword [ebp - 0x108]
mov dword [esp], ebx
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
mov byte [ebp - 0x139], al
push edi
movzx eax, word [esi + 0x48]
cmp byte [ebp - 0x139], 0
jne 0x70111e00
mov edi, dword [ebp - 0x10c]
cmp word [edi + 0x28], ax
jne 0x70111dfa
cmp dword [ebp - 0x114], 0
je 0x701132df
lea eax, [esi + 0x30]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
lea eax, [esi + 0x4a]
mov dword [esp], eax
lea ecx, [ebp - 0x80]
call method.OpenMPT::RowVisitor.GetFirstUnvisitedRow_unsigned_short__unsigned_int__bool__const
sub esp, 0xc
test al, al
je 0x701132df
fld qword [ebp - 0xa8]
fstp qword [ebp - 0xe0]
jmp 0x70111f67
inc eax
jmp 0x70112795
shl ebx, 6
mov edi, dword [ebp + 8]
add ebx, dword [edi + 0x763f8]
mov edi, dword [ebx + 0xc]
cmp dword [esi + 0x30], edi
jb 0x70111e1b
mov dword [esi + 0x30], 0
cmp dword [ebp - 0x114], 2
mov edx, dword [esi + 0x30]
jne 0x70111e3d
cmp word [ebp - 0xf4], ax
jne 0x70111e48
cmp dword [ebp - 0xf8], edx
jne 0x70111e48
jmp 0x70111b62
xor ebx, ebx
cmp dword [ebp - 0x114], 3
je 0x70111e7c
mov edi, dword [ebp - 0x148]
xor ebx, ebx
cmp edi, dword [ebp - 0x58]
ja 0x70111e7c
fld dword [0x702b5e70]
cmp edi, 0x100
fstp qword [ebp - 0xa8]
jbe 0x70111e6f
shr dword [ebp - 0x148], 1
mov dword [ebp - 0x58], 0
mov bl, byte [ebp - 0x139]
lea ecx, [esi + 0x268]
mov dword [esp + 4], edx
mov dword [ebp - 0x50], ecx
mov dword [esp], eax
movzx ecx, byte [ebp - 0x110]
mov dword [esp + 0xc], ecx
lea ecx, [ebp - 0x50]
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x80]
mov dword [ebp - 0x4c], 0x100
call method.OpenMPT::RowVisitor.Visit_unsigned_short__unsigned_int__mpt::mpt_libopenmpt::span_OpenMPT::ModChannel_const__const__bool_
sub esp, 0x10
test al, al
je 0x70111ebf
cmp dword [ebp - 0x114], 1
ja 0x70111f33
jmp 0x70111f13
test bl, bl
jne 0x70111eb4
mov eax, dword [esi + 0x48]
mov ecx, dword [ebp + 8]
mov word [ebp - 0xca], ax
mov eax, dword [esi + 0x30]
mov dword [esp + 4], 0
mov dword [esp], esi
mov dword [ebp - 0xd4], eax
call method.OpenMPT::CSoundFile.SetupNextRow_OpenMPT::CSoundFile::PlayState__bool__const
push ebx
mov eax, dword [ebp + 8]
push ebx
movzx ebx, word [esi + 0x46]
shl ebx, 6
add ebx, dword [eax + 0x763f8]
mov eax, dword [ebx + 0xc]
cmp dword [esi + 0x30], eax
jb 0x70111fa6
mov dword [esi + 0x30], 0
jmp 0x70111fa6
mov eax, dword [esi + 0x48]
mov word [ebp - 0xcc], ax
mov eax, dword [esi + 0x30]
cmp dword [ebp - 0x114], 0
mov dword [ebp - 0xd8], eax
je 0x701132df
lea eax, [esi + 0x30]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
lea eax, [esi + 0x4a]
mov dword [esp], eax
lea ecx, [ebp - 0x80]
call method.OpenMPT::RowVisitor.GetFirstUnvisitedRow_unsigned_short__unsigned_int__bool__const
sub esp, 0xc
test al, al
je 0x701132df
fld qword [ebp - 0xa8]
fstp qword [ebp - 0xe0]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x124]
mov dword [esp], eax
call method.std::vector_OpenMPT::GetLengthType__std::allocator_OpenMPT::GetLengthType___.push_back_OpenMPT::GetLengthType_const_
push ecx
lea ecx, [ebp - 0xc0]
mov eax, dword [esi + 0x30]
mov dword [ebp - 0xd0], eax
mov ax, word [esi + 0x4a]
mov word [ebp - 0xc8], ax
call method.OpenMPT::GetLengthMemory.Reset__
mov eax, dword [esi + 0x30]
mov dword [esi + 0x34], eax
jmp 0x70111b2a
cmp byte [ebp - 0x110], 0
jne 0x70111b2a
mov ecx, ebx
mov edi, dword [esi + 0x30]
call method.OpenMPT::CPattern.GetNumChannels___const
lea ecx, [ebp - 0x50]
movzx eax, ax
imul eax, edi
imul eax, eax, 6
add eax, dword [ebx]
mov dword [ebp - 0x4c], 0xd
mov ebx, eax
mov eax, dword [ebp + 8]
add eax, 0x106490
mov dword [ebp - 0x140], eax
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
mov word [ebp - 0x108], 0
mov byte [ebp - 0x120], al
movzx edi, word [ebp - 0x108]
mov eax, dword [ebp + 8]
cmp di, word [eax + 0x753bc]
jae 0x701121f0
mov ecx, ebx
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne 0x701120b3
cmp byte [ebp - 0x120], 0
je 0x7011203a
mov eax, edi
mov edx, dword [ebp + 8]
shl eax, 5
test byte [edx + eax + 0x75419], 4
jne 0x701120b3
mov al, byte [ebx]
add eax, 5
cmp al, 1
ja 0x701120d7
cmp byte [esi + 0x36aa4], 0
je 0x701120b3
mov al, byte [ebx + 1]
lea edx, [eax - 1]
cmp dl, 0xf9
ja 0x701120b3
movzx eax, byte [ebx + 3]
movzx ecx, byte [ebx + 5]
shl eax, 8
add eax, ecx
movzx eax, ax
mov dword [ebp - 0x110], eax
fld dword [0x702b5e64]
fidivr dword [ebp - 0x110]
movzx eax, byte [ebx + 2]
movzx ecx, byte [ebx + 4]
shl eax, 8
mov byte [ebp - 0x50], dl
add eax, ecx
lea ecx, [esi + 0x36a8c]
movzx eax, ax
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x50]
mov dword [esp], eax
fstp dword [ebp - 0x110]
call method.std::map_std::pair_unsigned_char__unsigned_int___float__std::less_std::pair_unsigned_char__unsigned_int_____std::allocator_std::pair_std::pair_unsigned_char__unsigned_int__const__float_____.operator___std::pair_unsigned_char__unsigned_int__
fld dword [ebp - 0x110]
push edx
fstp dword [eax]
movzx eax, word [ebp - 0x108]
imul eax, eax, 0x368
mov ecx, 6
lea edx, [esi + eax + 0x57c]
xor eax, eax
mov edi, edx
rep stosb byte es:[edi], al
jmp 0x701121e1
imul edx, edi, 0x368
add edx, esi
mov eax, dword [ebx]
mov dword [edx + 0x57c], eax
mov ax, word [ebx + 4]
mov word [edx + 0x580], ax
mov al, byte [ebx + 3]
cmp al, 0x13
je 0x701121cd
ja 0x7011210c
cmp al, 0x10
je 0x70112115
cmp al, 0x11
je 0x7011211b
jmp 0x701121e1
cmp al, 0x14
je 0x7011215f
jmp 0x701121e1
movzx eax, byte [ebx + 5]
jmp 0x70112149
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x106488
mov dword [ebp - 0x4c], 5
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
je 0x701121e1
movzx eax, byte [ebx + 5]
test al, al
je 0x701121e1
mov dword [esp + 4], eax
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.SetSpeed_OpenMPT::CSoundFile::PlayState__unsigned_int__const
push edi
push edi
jmp 0x701121e1
mov al, byte [edx + 0x581]
test al, al
jne 0x70112178
mov ecx, dword [ebp + 8]
test dword [ecx + 0x753b4], 0x1000022
jne 0x70112187
imul edx, edi, 0x368
mov byte [esi + edx + 0x5a9], al
jmp 0x70112193
mov al, byte [edx + 0x5a9]
mov byte [edx + 0x581], al
mov dl, byte [ebx + 5]
mov al, dl
and eax, 0xfffffff0
cmp al, 0x60
jne 0x701121a7
and edx, 0xf
add dword [esi + 0x18], edx
jmp 0x701121e1
cmp al, 0xe0
jne 0x701121e1
cmp dword [esi + 0x14], 0
jne 0x701121e1
mov eax, dword [ebp + 8]
and edx, 0xf
test byte [eax + 0x753b4], 2
je 0x701121c4
test dl, dl
je 0x701121e1
movzx edx, dl
inc edx
mov dword [esi + 0x14], edx
jmp 0x701121e1
mov al, byte [ebx + 5]
mov dl, al
and edx, 0xfffffff0
cmp dl, 0xe0
jne 0x701121e1
and eax, 0xf
inc eax
mov dword [esi + 0x14], eax
inc word [ebp - 0x108]
add ebx, 6
jmp 0x70111ff9
mov ecx, esi
call method.OpenMPT::CSoundFile::PlayState.TicksOnRow___const
mov dword [ebp - 0x110], eax
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x70112209
mov eax, 1
mov edi, dword [ebp - 0x110]
mov dword [esi + 0x40], 0xffffffff
sub edi, eax
mov dword [esi + 0x3c], 0xffffffff
mov dword [ebp - 0x120], edi
mov word [esi + 0x44], 0xffff
mov word [ebp - 0x12c], 0
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x12c]
cmp di, word [eax + 0x753bc]
jae 0x7011274c
movzx eax, di
imul ebx, eax, 0x368
mov dword [ebp - 0x108], eax
lea eax, [esi + ebx + 0x57c]
mov ecx, eax
mov dword [ebp - 0x138], eax
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne case.0x70113723.1
lea eax, [esi + ebx]
lea edi, [esi + ebx + 0x268]
cmp dword [ebp - 0x128], 0
mov bl, byte [eax + 0x57f]
mov byte [ebp - 0x130], bl
mov bl, byte [eax + 0x581]
je 0x7011370f
mov dl, byte [eax + 0x57c]
mov byte [ebp - 0x14c], dl
mov dl, byte [eax + 0x57d]
test dl, dl
je 0x701122d2
mov byte [eax + 0x58b], dl
mov byte [eax + 0x587], 0
mov edx, dword [ebp - 0x108]
mov eax, dword [ebp - 0xb8]
mov byte [eax + edx*8 + 5], 0xff
mov ecx, dword [ebp - 0x138]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x701122fe
imul eax, dword [ebp - 0x108], 0x368
cmp byte [esi + eax + 0x57d], 0
jne 0x701123ba
jmp 0x70112460
imul eax, dword [ebp - 0x108], 0x368
mov dl, byte [ebp - 0x14c]
mov ecx, edi
mov byte [esi + eax + 0x587], dl
call method.OpenMPT::ModChannel.RestorePanAndFilter__
cmp dword [ebp - 0x134], 7
jne 0x70112338
movzx eax, word [ebp - 0x12c]
mov edx, dword [ebp - 0xb8]
cmp dword [edx + eax*8], 0xffffffff
jne 0x701123a7
imul eax, dword [ebp - 0x108], 0x368
add eax, esi
mov edx, dword [eax + 0x4f8]
movzx eax, byte [eax + 0x58b]
test al, al
je 0x7011236d
mov ecx, dword [ebp + 8]
movzx ecx, word [ecx + 0x753c0]
cmp eax, ecx
jg 0x7011236d
mov edx, dword [ebp + 8]
mov edx, dword [edx + eax*4 + 0xdbd1c]
test edx, edx
je 0x701123a7
mov al, byte [edx + 0x15]
test al, al
jns 0x7011238c
imul ecx, dword [ebp - 0x108], 0x368
and eax, 0x7f
mov byte [esi + ecx + 0x5ad], al
mov al, byte [edx + 0x16]
test al, al
jns 0x701123a7
imul edx, dword [ebp - 0x108], 0x368
and eax, 0x7f
mov byte [esi + edx + 0x5ae], al
mov ecx, dword [ebp - 0x138]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x701122e1
imul eax, dword [ebp - 0x108], 0x368
movzx eax, byte [esi + eax + 0x58b]
test al, al
je 0x70112405
mov edx, dword [ebp + 8]
movzx edx, word [edx + 0x753c0]
cmp eax, edx
jg 0x70112405
mov edx, dword [ebp + 8]
mov eax, dword [edx + eax*4 + 0xdbd1c]
test eax, eax
je 0x70112405
test byte [eax + 0xf], 1
je 0x70112405
mov dword [esp + 4], edx
mov ecx, edi
mov eax, dword [eax + 8]
mov dword [esp], eax
call method.OpenMPT::ModChannel.SetInstrumentPan_int__OpenMPT::CSoundFile_const_
push ecx
push ecx
imul eax, dword [ebp - 0x108], 0x368
mov ecx, dword [ebp + 8]
movzx eax, byte [esi + eax + 0x58b]
mov dword [esp + 4], eax
movzx eax, byte [ebp - 0x14c]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.GetSampleIndex_unsigned_char__unsigned_int__const
test ax, ax
push edx
push edx
je 0x70112460
movzx eax, ax
imul eax, eax, 0x68
add eax, dword [ebp + 8]
test byte [eax + 0x7643e], 0x20
je 0x70112460
mov edx, dword [ebp + 8]
mov ecx, edi
mov dword [esp + 4], edx
movzx eax, word [eax + 0x76438]
mov dword [esp], eax
call method.OpenMPT::ModChannel.SetInstrumentPan_int__OpenMPT::CSoundFile_const_
push ecx
push ecx
imul eax, dword [ebp - 0x108], 0x368
lea edx, [esi + eax]
mov al, byte [edx + 0x57e]
cmp al, 4
ja 0x70112498
cmp al, 2
ja 0x7011249e
dec al
jne 0x701124ee
movzx eax, word [ebp - 0x12c]
mov ecx, dword [ebp - 0xb8]
mov dl, byte [edx + 0x580]
mov byte [ecx + eax*8 + 5], dl
jmp 0x701124ee
cmp al, 0xb
je 0x701124b0
jmp 0x701124ee
mov al, byte [edx + 0x580]
test al, al
je 0x701124ee
mov byte [edx + 0x5aa], al
jmp 0x701124ee
cmp byte [edx + 0x580], 0
je 0x701124ee
mov eax, dword [ebp - 0x138]
mov dword [esp + 4], 0
mov dword [esp], eax
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x14c], edx
call method.OpenMPT::CSoundFile.GetVolCmdTonePorta_OpenMPT::ModCommand_const__unsigned_int__const
test eax, 0xff0000
push edx
push edx
mov edx, dword [ebp - 0x14c]
mov word [edx + 0x568], ax
jne case.0x70113af9.10
mov al, byte [ebp - 0x130]
sub eax, 0xc
cmp al, 0x10
jbe 0x70113f33
mov al, byte [ebp - 0x130]
sub eax, 2
cmp al, 0x2c
jbe 0x70113af6
imul eax, dword [ebp - 0x108], 0x368
lea edx, [esi + eax]
mov al, byte [edx + 0x57e]
cmp al, 7
je 0x70112552
cmp al, 8
je 0x70112595
cmp al, 2
jne 0x701125ad
mov dword [esp + 8], 6
mov ecx, dword [ebp + 8]
movzx eax, byte [edx + 0x580]
mov dword [esp], edi
mov dword [esp + 4], eax
call method.OpenMPT::CSoundFile.Panning_OpenMPT::ModChannel__unsigned_int__OpenMPT::CSoundFile::PanningType__const
sub esp, 0xc
jmp 0x701125ad
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov dword [ebp - 0x130], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 0x15
call method.std::bitset_122u_::reference.operator_bool___const
mov edx, dword [ebp - 0x130]
mov cl, al
test cl, cl
movzx eax, byte [edx + 0x580]
je 0x70112590
and eax, 0xf
mov byte [edx + 0x59f], al
jmp 0x701125ad
shl eax, 4
jmp 0x7011259c
movzx eax, byte [edx + 0x580]
mov dword [esp + 4], eax
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Vibrato_OpenMPT::ModChannel__unsigned_int__const
push eax
push eax
imul edx, dword [ebp - 0x108], 0x368
add edx, esi
mov al, byte [edx + 0x57f]
cmp al, 8
je 0x70112669
ja 0x701125d6
and eax, 0xfffffffd
cmp al, 5
jne 0x7011270c
jmp 0x701125e7
cmp al, 0x1a
je 0x701125e7
cmp al, 0x1b
je 0x701126e8
jmp 0x7011270c
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x120]
test dword [edx + 0x753b4], 0x1000020
je 0x70112611
test byte [edx + 0x753d0], 4
mov eax, dword [ebp - 0x110]
je 0x70112611
mov eax, dword [ebp - 0x120]
imul edx, dword [ebp - 0x108], 0x368
lea ecx, [ebp - 0x50]
movzx edx, byte [esi + edx + 0x59f]
imul edx, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x130], edx
add eax, 0x106488
mov dword [ebp - 0x4c], 0x15
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
mov edx, dword [ebp - 0x130]
test al, al
je 0x70112653
shl edx, 2
imul eax, dword [ebp - 0x108], 0x368
add byte [esi + eax + 0x59b], dl
jmp 0x7011270c
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x120]
test dword [edx + 0x753b4], 0x1000020
je 0x70112693
test byte [edx + 0x753d0], 4
mov eax, dword [ebp - 0x110]
je 0x70112693
mov eax, dword [ebp - 0x120]
imul edx, dword [ebp - 0x108], 0x368
lea ecx, [ebp - 0x50]
movzx edx, byte [esi + edx + 0x5a2]
imul edx, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x130], edx
add eax, 0x106488
mov dword [ebp - 0x4c], 0x15
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
mov edx, dword [ebp - 0x130]
test al, al
je 0x701126d5
shl edx, 2
imul eax, dword [ebp - 0x108], 0x368
add byte [esi + eax + 0x59c], dl
jmp 0x7011270c
mov eax, dword [ebp - 0x110]
lea ecx, [eax - 1]
mov al, byte [edx + 0x5a5]
imul eax, ecx
add byte [edx + 0x59d], al
mov ecx, dword [ebp + 8]
mov dword [esp], edi
call method.OpenMPT::CSoundFile.ProcessPanbrello_OpenMPT::ModChannel__const
push eax
mov eax, dword [ebp - 0x140]
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 0xe
call method.std::bitset_122u_::reference.operator_bool___const
test bl, bl
je case.0x70113723.1
test al, al
je case.0x70113723.1
movzx eax, bl
mov ecx, dword [ebp + 8]
mov dword [esp + 4], eax
mov dword [esp], edi
call method.OpenMPT::CSoundFile.UpdateS3MEffectMemory_OpenMPT::ModChannel__unsigned_char__const
push ecx
push ecx
inc word [ebp - 0x12c]
jmp 0x70112234
mov eax, dword [ebp + 8]
cmp dword [eax + 0x753b4], 4
jne 0x70112761
cmp dword [esi + 0x28], 0xffff
je 0x7011278c
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov eax, dword [eax + 0x753d8]
mov dword [esi + 0x20], eax
movzx eax, word [esi + 0x46]
shl eax, 6
add eax, dword [edi + 0x763f8]
mov edx, dword [eax + 0x10]
mov edi, edx
add edi, dword [eax + 0x14]
je 0x7011279e
mov dword [esi + 0x20], edx
jmp 0x7011279e
mov eax, dword [esi + 0x30]
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x48]
mov word [esi + 0x4a], ax
jmp 0x70111b2a
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.GetTickDuration_OpenMPT::CSoundFile::PlayState__const
mov ecx, dword [ebp - 0x110]
mov dword [ebp - 0x138], eax
imul ecx, eax
mov eax, dword [ebp + 8]
push edx
mov dword [ebp - 0x108], ecx
mov dword [ebp - 0x104], 0
mov eax, dword [eax + 0x602c]
xor edx, edx
fild qword [ebp - 0x108]
mov dword [ebp - 0x108], eax
mov dword [ebp - 0x104], edx
fild qword [ebp - 0x108]
fdivp st(1)
fadd qword [ebp - 0xa8]
fstp qword [ebp - 0xa8]
add dword [esi], ecx
cmp dword [ebp - 0x134], 7
jne 0x701132a8
mov word [ebp - 0x13c], 0
movzx edi, word [ebp - 0x13c]
mov eax, dword [ebp + 8]
cmp di, word [eax + 0x753bc]
jae 0x701132a8
lea eax, [edi*8]
mov ebx, dword [ebp - 0xb8]
add ebx, eax
mov dword [ebp - 0x15c], eax
cmp dword [ebx], 0xffffffff
je 0x7011329c
imul eax, edi, 0x368
lea edx, [esi + eax + 0x268]
mov dword [ebp - 0x108], edx
lea edx, [esi + eax + 0x57c]
cmp dword [esi + eax + 0x524], 0
mov dword [ebp - 0x12c], edx
jne 0x70112880
mov ecx, edx
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne 0x7011329c
imul eax, edi, 0x368
mov ecx, dword [ebp - 0x12c]
lea edx, [esi + eax]
mov dword [ebp - 0x140], edx
mov al, byte [edx + 0x581]
mov byte [ebp - 0x120], al
and eax, 0xf
mov byte [ebp - 0x151], al
mov eax, dword [ebp - 0x120]
and eax, 0xf
mov dword [ebp - 0x130], eax
call method.OpenMPT::ModCommand.IsPortamento___const
mov edx, dword [ebp - 0x140]
mov byte [ebp - 0x14c], al
cmp byte [edx + 0x57d], 0
je 0x701128dd
mov dword [edx + 0x4fc], 0
mov ecx, dword [ebp - 0x12c]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x70112b0e
cmp byte [ebp - 0x14c], 0
je 0x7011294d
cmp byte [ebx + 4], 0
je 0x7011294d
imul eax, edi, 0x368
mov dword [esp + 0xc], 0
lea ecx, [ebp - 0x50]
mov eax, dword [esi + eax + 0x524]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.GetChannelIncrement_OpenMPT::ModChannel_const__unsigned_int__int__const
imul eax, edi, 0x368
mov ecx, dword [ebp - 0x50]
mov ebx, dword [ebp - 0x4c]
sub esp, 0x10
mov dword [esi + eax + 0x270], ecx
mov dword [esi + eax + 0x274], ebx
imul eax, edi, 0x368
add eax, esi
mov dl, byte [eax + 0x587]
mov ebx, dword [eax + 0x51c]
mov byte [eax + 0x58a], dl
mov dword [ebp - 0x158], ebx
movzx eax, byte [eax + 0x58b]
movzx ebx, byte [ebp - 0x14c]
test al, al
je 0x701129ab
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 1
mov dword [esp + 8], ebx
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.InstrumentChange_OpenMPT::ModChannel__unsigned_int__bool__bool__bool__const
sub esp, 0x14
imul eax, edi, 0x368
mov dword [esp + 0x14], 0xffff
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 1
mov dword [esp + 8], ebx
movzx eax, byte [esi + eax + 0x57c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.NoteChange_OpenMPT::ModChannel__int__bool__bool__bool__unsigned_short__const
sub esp, 0x18
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp + 8]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.HandleNoteChangeFilter_OpenMPT::ModChannel__const
push eax
mov ecx, dword [ebp + 8]
movzx eax, byte [ebp - 0x120]
mov dword [esp + 4], edi
mov dword [esp], esi
sar eax, 4
lea ebx, [edi*8]
mov dword [ebp - 0x140], eax
call method.OpenMPT::CSoundFile.HandleDigiSamplePlayDirection_OpenMPT::CSoundFile::PlayState__unsigned_short__const
add ebx, dword [ebp - 0xb8]
push eax
push eax
mov byte [ebx + 4], 1
imul eax, edi, 0x368
add eax, esi
mov dl, byte [eax + 0x57f]
lea ecx, [edx - 0x13]
mov byte [ebp - 0x150], cl
cmp cl, 1
ja 0x70112a70
mov al, byte [eax + 0x581]
and eax, 0xfffffff0
cmp al, 0xd0
jne 0x70112a89
mov eax, dword [ebp - 0x130]
cmp dword [ebp - 0x110], eax
mov dword [ebp - 0x120], eax
jbe 0x70112a89
jmp 0x70112a93
mov eax, dword [ebp - 0x140]
cmp dword [ebp - 0x110], eax
mov dword [ebp - 0x120], eax
jbe 0x70112a89
cmp dl, 0x21
je 0x70112a93
mov dword [ebp - 0x120], 0
mov eax, dword [esi + 0x14]
cmp eax, 1
jbe 0x70112ac3
cmp dword [ebp - 0x120], 0
je 0x70112ac3
mov ecx, dword [ebp + 8]
test dword [ecx + 0x753b4], 0x1000022
je 0x70112ac3
mov ecx, dword [esi + 0x28]
dec eax
add ecx, dword [esi + 0x18]
imul eax, ecx
add dword [ebp - 0x120], eax
cmp byte [ebp - 0x14c], 0
jne 0x70112ad2
mov dword [ebx], 0
cmp dl, 9
je 0x70112af9
cmp dword [ebp - 0x140], 8
jne 0x70112ae9
cmp byte [ebp - 0x150], 1
jbe 0x70112af9
imul eax, edi, 0x368
cmp byte [esi + eax + 0x57e], 2
jne 0x70112b18
imul eax, edi, 0x368
mov ebx, dword [ebp - 0x158]
mov dword [esi + eax + 0x51c], ebx
jmp 0x70112b18
mov dword [ebp - 0x120], 0
mov ecx, dword [ebp - 0x12c]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x70112b49
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x106494
mov dword [ebp - 0x4c], 0x12
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
je 0x70112c59
imul edx, edi, 0x368
add edx, esi
mov al, byte [edx + 0x57f]
cmp al, 0xa
jne 0x70112b7c
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.ProcessSampleOffset_OpenMPT::ModChannel__unsigned_short__OpenMPT::CSoundFile::PlayState_const__const
sub esp, 0xc
jmp 0x70112c59
cmp al, 0x2c
jne 0x70112ba5
movzx eax, byte [edx + 0x581]
mul dword [edx + 0x2b4]
shrd eax, edx, 8
shr edx, 8
mov dword [esp], eax
mov dword [esp + 4], edx
call method.unsigned_int_mpt::mpt_libopenmpt.saturate_cast_unsigned_int__unsigned_long_long__unsigned_long_long_
jmp 0x70112c42
cmp al, 0x2a
jne 0x70112c06
cmp dword [edx + 0x2d0], 0
je 0x70112c06
mov eax, dword [ebp - 0x118]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], edi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
imul eax, edi, 0x368
sub esp, 0xc
mov ecx, dword [ebp + 8]
movzx eax, byte [esi + eax + 0x581]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.ReverseSampleOffset_OpenMPT::ModChannel__unsigned_char__const
push eax
push eax
mov eax, dword [esi + 0x28]
dec eax
mov dword [ebp - 0x120], eax
jmp 0x70112c59
imul edx, edi, 0x368
add edx, esi
cmp byte [edx + 0x57e], 0xf
jne 0x70112c59
mov ecx, dword [edx + 0x2d0]
test ecx, ecx
je 0x70112c59
movzx eax, byte [edx + 0x580]
cmp al, 9
ja 0x70112c59
test al, al
jne 0x70112c38
mov eax, dword [edx + 0x500]
jmp 0x70112c42
mov eax, dword [ecx + eax*4 + 0x40]
mov dword [edx + 0x500], eax
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.SampleOffset_OpenMPT::ModChannel__unsigned_int__const
push eax
push eax
imul eax, edi, 0x368
mov dl, byte [ebp - 0x139]
cmp byte [esi + eax + 0x57c], 0xfd
ja 0x70112ce4
jne 0x70112c7e
mov eax, dword [ebp + 8]
cmp word [eax + 0x753c0], 0
jne 0x70112ce4
imul eax, edi, 0x368
add eax, esi
mov cl, byte [eax + 0x57f]
lea edx, [ecx - 0x13]
cmp dl, 1
ja 0x70112cb7
mov al, byte [eax + 0x581]
mov ebx, dword [ebp - 0x130]
and eax, 0xfffffff0
cmp al, 0xc0
sete dl
cmp dword [ebp - 0x110], ebx
seta al
and dl, al
je 0x70112cde
jmp 0x70112ce4
cmp cl, 0x21
jne 0x70112cde
xor edx, edx
cmp byte [ebp - 0x151], 0
je 0x70112ce4
mov eax, dword [ebp - 0x130]
add eax, dword [ebp - 0x120]
cmp eax, dword [ebp - 0x110]
setb dl
jmp 0x70112ce4
cmp cl, 0x19
sete dl
imul ecx, edi, 0x368
add ecx, esi
mov al, byte [ecx + 0x57f]
cmp al, 0xd
jne 0x70112cff
movzx eax, byte [ecx + 0x581]
jmp 0x70112d1c
cmp al, 0x2e
jne 0x70112d0c
movzx eax, byte [ecx + 0x581]
jmp 0x70112d1f
cmp byte [ecx + 0x57e], 1
jne 0x70112d25
movzx eax, byte [ecx + 0x580]
shl eax, 2
mov dword [ecx + 0x518], eax
imul eax, edi, 0x368
add eax, esi
cmp dword [eax + 0x2d0], 0
je 0x70112d72
test dl, dl
jne 0x70112d76
mov cl, byte [eax + 0x57f]
cmp cl, 0x2e
ja 0x70112d93
movzx edx, cl
shr edx, 5
mov ebx, 1
shl ebx, cl
test dword [ebp + edx*4 - 0xe8], ebx
jne 0x70112d76
cmp cl, 0x13
jne 0x70112d93
mov al, byte [eax + 0x581]
and eax, 0xfffffff0
sub eax, 0x10
test al, 0xe0
jne 0x70112d93
jmp 0x70112d76
test dl, dl
je 0x70112d93
mov ecx, dword [ebp - 0x108]
call method.OpenMPT::ModChannel.Stop__
mov eax, dword [ebp - 0xb8]
mov dword [eax + edi*8], 0
jmp 0x7011329c
mov ebx, dword [ebp - 0x138]
cmp dword [ebp - 0x118], ebx
je 0x70112dcd
cmp dword [ebp - 0x118], 0
je 0x70112dcd
mov eax, dword [ebp - 0x118]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], edi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
sub esp, 0xc
imul edx, edi, 0x368
add edx, esi
mov al, byte [edx + 0x57f]
cmp al, 0x14
je 0x70112f4c
ja 0x70112e04
cmp al, 0xb
je 0x70112e3e
ja 0x70112df7
sub eax, 6
cmp al, 1
jbe 0x70112e3e
jmp 0x701130a1
cmp al, 0x13
je 0x70112ec0
jmp 0x701130a1
cmp al, 0x24
ja 0x70112e15
cmp al, 0x22
jbe 0x701130a1
jmp 0x70113053
cmp al, 0x2d
jne 0x701130a1
movzx eax, byte [edx + 0x581]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.DigiBoosterSampleReverse_OpenMPT::ModChannel__unsigned_char__const
jmp 0x7011304f
imul eax, edi, 0x368
cmp byte [esi + eax + 0x581], 0
jne 0x70112e5e
mov eax, dword [ebp + 8]
cmp dword [eax + 0x753b4], 1
je 0x701130a1
imul eax, edi, 0x368
xor ebx, ebx
mov dword [ebp - 0x140], eax
cmp ebx, dword [ebp - 0x110]
je 0x701130a1
mov eax, dword [ebp - 0x140]
test ebx, ebx
sete byte [ebp - 0x130]
mov ecx, dword [ebp + 8]
lea edx, [esi + eax]
inc ebx
mov al, byte [edx + 0x5bb]
and eax, 0xfffffffe
or eax, dword [ebp - 0x130]
mov byte [edx + 0x5bb], al
movzx eax, byte [edx + 0x581]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.VolumeSlide_OpenMPT::ModChannel__unsigned_char__const
push eax
push eax
jmp 0x70112e6c
test byte [edx + 0x581], 0xf
jne 0x70112edc
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x100004
je 0x701130a1
imul eax, edi, 0x368
add eax, esi
mov dl, byte [eax + 0x581]
or byte [eax + 0x5bb], 1
mov al, dl
and eax, 0xfffffff0
cmp al, 0xa0
je 0x70112f24
cmp al, 0xb0
jne 0x701130a1
and edx, 0xf
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], edx
mov dword [esp], eax
mov ecx, dword [ebp + 8]
mov dword [esp + 8], 0
call method.OpenMPT::CSoundFile.FineVolumeDown_OpenMPT::ModChannel__unsigned_char__bool__const
jmp 0x70112f44
and edx, 0xf
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], 0
mov dword [esp + 4], edx
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.FineVolumeUp_OpenMPT::ModChannel__unsigned_char__bool__const
sub esp, 0xc
jmp 0x701130a1
movzx eax, byte [edx + 0x581]
cmp al, 0x9e
jne 0x70112f90
mov eax, dword [ebp - 0x118]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], edi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
imul eax, edi, 0x368
sub esp, 0xc
and dword [esi + eax + 0x2c0], 0xffffff7f
jmp 0x701130a1
cmp al, 0x9f
jne 0x7011302c
mov eax, dword [ebp - 0x118]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], edi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
imul eax, edi, 0x368
add eax, esi
sub esp, 0xc
mov ebx, dword [eax + 0x2c0]
mov edx, ebx
mov dword [ebp - 0x130], ebx
or dl, 0x80
mov dword [eax + 0x2c0], edx
cmp dword [eax + 0x26c], 0
jne 0x701130a1
mov ebx, dword [eax + 0x2b4]
test ebx, ebx
je 0x701130a1
mov ecx, dword [ebp - 0x12c]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x70113011
test byte [ebp - 0x130], 2
jne 0x701130a1
imul eax, edi, 0x368
add eax, esi
dec ebx
mov dword [eax + 0x268], 0xffffffff
mov dword [eax + 0x26c], ebx
jmp 0x701130a1
mov dl, al
and edx, 0xfffffff0
cmp dl, 0x70
jne 0x701130a1
cmp al, 0x72
jbe 0x701130a1
mov ebx, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov ecx, dword [ebp - 0x108]
call fcn.70116fa4
push ecx
push ecx
jmp 0x701130a1
mov eax, dword [ebp - 0x118]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], edi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp + 8], edi
mov eax, dword [esi + 0x30]
mov dword [esp + 4], eax
movzx eax, word [esi + 0x46]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.CalculateFinetuneTarget_unsigned_short__unsigned_int__unsigned_short__const
imul edx, edi, 0x368
sub esp, 0xc
mov word [esi + edx + 0x56e], ax
imul eax, edi, 0x368
lea ebx, [esi + eax]
mov al, byte [ebx + 0x5bb]
lea ecx, [ebx + 0x5b0]
or eax, 1
mov byte [ecx + 0xb], al
mov dl, byte [ebx + 0x57e]
cmp dl, 6
je 0x70113129
ja 0x701130dc
cmp dl, 5
je 0x701130ea
cmp dl, 2
jbe 0x70113234
jmp 0x7011316e
cmp dl, 0xe
je 0x70113218
jmp 0x70113234
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov dword [ebp - 0x4c], 9
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
movzx eax, al
mov dword [esp + 8], eax
mov ecx, dword [ebp + 8]
movzx eax, byte [ebx + 0x580]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.FineVolumeUp_OpenMPT::ModChannel__unsigned_char__bool__const
jmp 0x70113166
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov dword [ebp - 0x4c], 9
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
movzx eax, al
mov dword [esp + 8], eax
mov ecx, dword [ebp + 8]
movzx eax, byte [ebx + 0x580]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.FineVolumeDown_OpenMPT::ModChannel__unsigned_char__bool__const
sub esp, 0xc
jmp 0x70113234
mov al, byte [ebx + 0x580]
mov byte [ebp - 0x130], al
test al, al
jne 0x701131b8
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov byte [ebp - 0x140], dl
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 9
call method.std::bitset_122u_::reference.operator_bool___const
mov dl, byte [ebp - 0x140]
test al, al
je 0x701131b8
mov al, byte [ebx + 0x5aa]
mov byte [ebp - 0x130], al
test al, al
je 0x70113234
cmp dl, 3
jne 0x701131c4
shl byte [ebp - 0x130], 4
imul eax, edi, 0x368
xor ebx, ebx
mov dword [ebp - 0x140], eax
cmp ebx, dword [ebp - 0x110]
je 0x70113234
mov eax, dword [ebp - 0x140]
test ebx, ebx
sete cl
lea edx, [esi + eax + 0x5b0]
inc ebx
mov al, byte [edx + 0xb]
and eax, 0xfffffffe
or eax, ecx
mov ecx, dword [ebp + 8]
mov byte [edx + 0xb], al
movzx eax, byte [ebp - 0x130]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.VolumeSlide_OpenMPT::ModChannel__unsigned_char__const
push edx
push edx
jmp 0x701131d2
mov dl, byte [ebx + 0x580]
cmp dl, 1
ja 0x70113234
xor edx, 1
and eax, 0xfffffff7
and edx, 1
shl edx, 3
or eax, edx
mov byte [ecx + 0xb], al
imul eax, edi, 0x368
test byte [esi + eax + 0x5bb], 8
jne 0x7011329c
mov ecx, dword [ebp - 0x12c]
call method.OpenMPT::ModCommand.IsAnyPitchSlide___const
mov bl, al
mov eax, dword [ebp - 0x15c]
add eax, dword [ebp - 0xb8]
mov edx, dword [ebp - 0x110]
mov ecx, dword [eax]
add edx, ecx
test bl, bl
je 0x70113294
add ecx, dword [ebp - 0x120]
mov dword [eax], edx
mov eax, dword [ebp - 0x138]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], edi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
sub esp, 0xc
jmp 0x7011329c
sub edx, dword [ebp - 0x120]
mov dword [eax], edx
inc word [ebp - 0x13c]
jmp 0x70112812
mov eax, dword [ebp - 0x10c]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.HandleNextRow_OpenMPT::CSoundFile::PlayState__OpenMPT::ModSequence_const__bool__const
mov byte [ebp - 0x13c], al
mov eax, dword [ebp - 0x138]
sub esp, 0xc
mov dword [ebp - 0x118], eax
jmp 0x70111b2a
cmp dword [ebp - 0x134], 7
jne 0x7011332b
xor ebx, ebx
mov eax, dword [ebp + 8]
cmp bx, word [eax + 0x753bc]
jae 0x7011332b
movzx eax, bx
mov edx, dword [ebp - 0xb8]
cmp dword [edx + eax*8], 0xffffffff
je 0x70113328
mov edi, dword [ebp - 0x118]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], edi
mov dword [esp], eax
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
sub esp, 0xc
inc ebx
jmp 0x701132ea
cmp byte [ebp - 0xc6], 0
je 0x70113347
mov eax, dword [esi + 0x48]
mov word [ebp - 0xcc], ax
mov eax, dword [esi + 0x30]
mov dword [ebp - 0xd8], eax
fld qword [ebp - 0xa8]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x124]
mov dword [esp], eax
fstp qword [ebp - 0xe0]
call method.std::vector_OpenMPT::GetLengthType__std::allocator_OpenMPT::GetLengthType___.push_back_OpenMPT::GetLengthType_const_
cmp dword [ebp - 0x128], 0
push eax
je 0x701136a6
cmp byte [ebp - 0xc6], 0
jne 0x7011338b
cmp dword [ebp - 0x114], 0
jne 0x70113650
mov byte [ebp - 0x20], 0
lea ebx, [esi + 0x36a74]
cmp byte [esi + 0x36aa4], 0
je 0x701133aa
mov dword [esp], ebx
lea ecx, [ebp - 0x50]
call method.void_std::_Optional_payload_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_::_M_construct_OpenMPT::CSoundFile::PlayState.MIDIMacroEvaluationResults__OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_
push eax
mov ecx, ebx
call method.std::_Optional_payload_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_._M_reset__
mov eax, dword [ebp + 8]
mov dword [esp], esi
lea ecx, [eax + 0x1064c8]
call method.OpenMPT::CSoundFile::PlayState.operator_OpenMPT::CSoundFile::PlayState_
mov edi, dword [ebp + 8]
push eax
mov eax, dword [ebp + 8]
mov ecx, dword [edi + 0x13cfa0]
mov eax, dword [eax + 0x106518]
mov dword [edi + 0x10651c], 0
mov edx, eax
mov dword [edi + 0x106524], eax
shl edx, 0xc
mov eax, dword [edi + 0x1064f8]
mov dword [edi + 0x106528], edx
mov dword [edi + 0x106520], 0
mov dword [edi + 0x1064fc], eax
mov dword [edi + 0x1064dc], 0
mov dword [edi + 0x1064e0], 0
mov dword [edi + 0x1064d8], 0xfffffffe
mov byte [edi + 0x10652c], 1
test ecx, ecx
jne 0x70113433
xor ebx, ebx
jmp 0x7011348e
call method.OpenMPT::OPL.Reset__
jmp 0x7011342f
movzx esi, bx
imul eax, esi, 0x368
add eax, dword [ebp + 8]
mov dl, byte [eax + 0x106a4f]
test dl, dl
je 0x70113456
mov byte [eax + 0x106a52], dl
mov eax, dword [ebp - 0xb8]
lea eax, [eax + esi*8]
cmp byte [eax + 5], 0xff
jne 0x7011349c
imul eax, esi, 0x368
mov edi, dword [ebp + 8]
mov eax, dword [edi + eax + 0x106798]
test eax, eax
jne 0x701134c6
imul eax, esi, 0x368
mov edi, dword [ebp + 8]
inc ebx
mov dword [edi + eax + 0x106740], 0
mov eax, dword [ebp + 8]
cmp bx, word [eax + 0x753bc]
jb 0x7011343a
jmp 0x70113507
cmp dword [ebp - 0x134], 7
je 0x70113465
imul edx, esi, 0x368
movzx eax, byte [eax + 5]
add edx, dword [ebp + 8]
cmp al, 0x40
jbe 0x701134bb
mov eax, 0x40
shl eax, 2
mov dword [edx + 0x1069e0], eax
jmp 0x70113465
test byte [eax + 0x23], 2
je 0x70113479
mov ecx, dword [edi + 0x13cfa0]
test ecx, ecx
je 0x70113479
add eax, 0x44
mov dword [esp], esi
mov dword [esp + 4], eax
call method.OpenMPT::OPL.Patch_unsigned_short__std::array_unsigned_char__12u__const_
push eax
push eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x13cfa0]
mov dword [esp + 4], 1
mov dword [esp], esi
call method.OpenMPT::OPL.NoteCut_unsigned_short__bool_
push eax
push eax
jmp 0x70113479
lea edi, [ebp - 0xa0]
mov ecx, 8
xor eax, eax
mov esi, dword [ebp - 0x2c]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x34]
cmp esi, eax
je 0x701135cb
movzx edx, byte [esi + 0x10]
imul eax, edx, 0xa0
mov edi, dword [ebp + 8]
mov ecx, edx
mov ebx, dword [edi + eax + 0xdd43c]
test ebx, ebx
je 0x701135bc
mov edi, edx
shr edi, 5
mov eax, dword [ebp + edi*4 - 0xa0]
mov dword [ebp - 0x108], eax
mov eax, 1
shl eax, cl
test dword [ebp - 0x108], eax
jne 0x701135a6
cmp edx, 0xf9
jbe 0x70113587
mov dword [esp + 0xc], 0xfa
mov dword [esp + 8], edx
mov dword [esp + 4], 0x702b5ce5
mov dword [esp], 0x702b5cf1
call method.std.__throw_out_of_range_fmt_char_const__..._
or eax, dword [ebp - 0x108]
mov ecx, ebx
mov dword [ebp + edi*4 - 0xa0], eax
mov eax, dword [ebx]
mov dword [esp], 0xffffffff
call dword [eax + 0xb0]
push edi
fld dword [esi + 0x18]
mov eax, dword [ebx]
mov ecx, ebx
fstp dword [esp + 4]
mov edx, dword [esi + 0x14]
mov dword [esp], edx
call dword [eax + 0x2c]
push ecx
push ecx
mov dword [esp], esi
call method.std._Rb_tree_increment_std::_Rb_tree_node_base_const_
mov esi, eax
jmp 0x70113519
xor eax, eax
cmp dword [ebp + eax*4 - 0xa0], 0
jne 0x701135e5
inc eax
cmp eax, 8
jne 0x701135cd
mov eax, dword [ebp - 0x44]
lea ebx, [ebp - 0x4c]
jmp 0x70113621
xor ebx, ebx
mov edx, ebx
mov eax, 1
shr edx, 5
mov cl, bl
shl eax, cl
test dword [ebp + edx*4 - 0xa0], eax
je 0x70113616
imul eax, ebx, 0xa0
mov edi, dword [ebp + 8]
mov ecx, dword [edi + eax + 0xdd43c]
mov eax, dword [ecx]
call dword [eax + 0xb4]
inc ebx
cmp ebx, 0xfa
jne 0x701135e7
jmp 0x701135dd
cmp eax, ebx
je 0x70113646
movzx edx, byte [eax + 0x10]
imul edx, edx, 0xa0
fld dword [eax + 0x14]
mov edi, dword [ebp + 8]
fstp dword [edi + edx + 0xdd4cc]
mov dword [esp], eax
call method.std._Rb_tree_increment_std::_Rb_tree_node_base_const_
jmp 0x70113621
lea ecx, [ebp - 0x50]
call method.std::_Optional_payload_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_._M_reset__
jmp 0x70113680
cmp dword [ebp + 0xc], 3
je 0x70113680
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov eax, dword [eax + 0x753c4]
mov dword [edi + 0x1064f0], eax
mov eax, dword [edi + 0x753cc]
mov dword [edi + 0x1064f4], eax
mov eax, dword [edi + 0x753c8]
mov dword [edi + 0x106518], eax
mov edi, dword [ebp + 8]
mov al, byte [ebp - 0x13a]
cmp al, byte [edi + 0x76418]
je 0x701136a6
mov eax, dword [ebp - 0x144]
lea ecx, [edi + 0x76408]
mov dword [esp], eax
call method.OpenMPT::ModSequenceSet.SetSequence_unsigned_char_
push edx
test byte [ebp + 0xc], 9
lea ebx, [ebp - 0x80]
je 0x70113f3d
mov eax, dword [ebp + 8]
mov dword [esp], ebx
lea ecx, [eax + 0x13cf70]
call method.OpenMPT::RowVisitor.MoveVisitedRowsFrom_OpenMPT::RowVisitor_
push eax
jmp 0x70113f3d
mov al, byte [ebp - 0x130]
sub eax, 0xc
cmp al, 0x10
ja case.0x70113723.1
movzx eax, al
jmp dword [eax*4 + 0x702b5d28]
mov eax, dword [ebp - 0x108]
mov dword [esp], esi
mov dword [esp + 4], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.PositionJump_OpenMPT::CSoundFile::PlayState__unsigned_short__const
push eax
push eax
jmp 0x70113a41
movzx eax, bl
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], eax
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.PatternBreak_OpenMPT::CSoundFile::PlayState__unsigned_short__unsigned_char__const
sub esp, 0xc
cmp eax, 0xffffffff
je 0x70113a41
mov dword [esi + 0x3c], eax
jmp 0x70113a41
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x106488
mov dword [ebp - 0x4c], 5
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
jne 0x70113a41
mov eax, dword [ebp - 0x108]
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0x30]
mov dword [esp + 4], eax
movzx eax, word [esi + 0x46]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.CalculateXParam_unsigned_short__unsigned_int__unsigned_short__unsigned_int__const
imul eax, eax, 0x2710
sub esp, 0x10
mov dword [ebp - 0x130], eax
cmp dword [ebp - 0x128], 0
je 0x7011383b
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x1000022
je 0x7011383b
imul eax, dword [ebp - 0x108], 0x368
cmp dword [ebp - 0x130], 0x270f
jbe 0x70113827
mov dword [ebp - 0x138], eax
mov ecx, 0x2710
mov eax, dword [ebp - 0x130]
xor edx, edx
div ecx
mov edx, dword [ebp - 0x138]
mov byte [esi + edx + 0x5ab], al
jmp 0x7011383b
movzx ecx, byte [esi + eax + 0x5ab]
imul eax, ecx, 0x2710
mov dword [ebp - 0x130], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x14c], eax
imul eax, dword [eax + 0x18], 0x2710
cmp dword [ebp - 0x130], 0x4e1ff
mov dword [ebp - 0x138], eax
jbe 0x70113877
cmp dword [ebp - 0x130], eax
ja 0x70113925
mov eax, dword [ebp - 0x130]
jmp 0x7011392b
mov ecx, 0x2710
xor edx, edx
mov eax, dword [ebp - 0x130]
div ecx
mov edx, eax
and eax, 0xf0
and edx, 0xf
imul edx, dword [ebp - 0x120]
imul ecx, edx, 0x2710
mov edx, dword [esi + 0x2c]
cmp eax, 0x10
jne 0x701138ad
lea eax, [ecx + edx]
mov dword [esi + 0x2c], eax
jmp 0x701138bf
cmp ecx, edx
jae 0x701138b8
sub edx, ecx
mov dword [esi + 0x2c], edx
jmp 0x701138bf
mov dword [esi + 0x2c], 0
mov eax, dword [ebp - 0x14c]
lea ecx, [ebp - 0x50]
imul edx, dword [eax + 0x14], 0x2710
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x130], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 8
call method.std::bitset_122u_::reference.operator_bool___const
mov edx, dword [ebp - 0x130]
test al, al
je 0x701138fe
mov dword [ebp - 0x138], 0x26e8f0
cmp edx, dword [ebp - 0x138]
ja 0x70113a41
mov eax, dword [esi + 0x2c]
cmp edx, eax
jbe 0x70113919
mov dword [esi + 0x2c], edx
jmp 0x70113a41
cmp dword [ebp - 0x138], eax
jae 0x70113a41
mov eax, dword [ebp - 0x138]
mov dword [esi + 0x2c], eax
jmp 0x70113a41
mov al, bl
and eax, 0xfffffff0
cmp al, 0xb0
je 0x701139c3
ja 0x70113969
cmp al, 0x90
je 0x70113972
cmp al, 0xa0
jne 0x70113ab8
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5ac], dl
jmp 0x70113ab8
cmp al, 0xf0
je 0x701139e9
jmp 0x70113ab8
cmp bl, 0x91
ja 0x70113ab8
imul eax, dword [ebp - 0x108], 0x368
mov edx, dword [esi + eax + 0x2c0]
mov eax, edx
and ah, 0xfe
cmp bl, 0x91
jne 0x7011399b
mov eax, edx
or ah, 1
imul edx, dword [ebp - 0x108], 0x368
mov dword [esi + edx + 0x2c0], eax
jmp 0x70113ab8
mov al, bl
and eax, 0xfffffff0
cmp al, 0x60
je 0x701139c3
cmp al, 0xf0
je 0x701139e9
jmp 0x70113a53
mov eax, ebx
mov dword [esp], esi
and eax, 0xf
mov ecx, dword [ebp + 8]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], eax
call method.OpenMPT::CSoundFile.PatternLoop_OpenMPT::CSoundFile::PlayState__unsigned_short__unsigned_char__const
sub esp, 0xc
jmp 0x70113ab8
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5b4], dl
jmp 0x70113ab8
mov al, bl
and eax, 0xfffffff0
cmp al, 0xa0
jne 0x70113a41
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov dword [ebp - 0x4c], 0x1a
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
jne 0x70113a41
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5ac], dl
cmp dword [ebp - 0x128], 0
je case.0x70113723.1
jmp case.0x70113af9.10
cmp dword [ebp - 0x128], 0
je case.0x70113723.1
cmp bl, 0xf
ja case.0x70113af9.18
mov edx, dword [ebp + 8]
mov eax, esi
movzx edx, word [edx + 0x753bc]
imul edx, edx, 0x368
add edx, esi
mov dword [ebp - 0x130], edx
mov dl, bl
and edx, 1
mov byte [ebp - 0x138], dl
cmp dword [ebp - 0x130], eax
je case.0x70113af9.18
mov edx, dword [eax + 0x2c0]
mov ecx, edx
and ch, 0xbf
cmp byte [ebp - 0x138], 0
jne 0x70113aab
or dh, 0x40
mov ecx, edx
mov dword [eax + 0x2c0], ecx
add eax, 0x368
jmp 0x70113a8a
cmp dword [ebp - 0x128], 0
je case.0x70113723.1
mov al, bl
and eax, 0xfffffff0
cmp al, 0x80
jne case.0x70113af9.10
mov eax, ebx
mov dword [esp + 8], 4
and eax, 0xf
mov dword [esp + 4], eax
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Panning_OpenMPT::ModChannel__unsigned_int__OpenMPT::CSoundFile::PanningType__const
sub esp, 0xc
jmp case.0x70113af9.10
movzx eax, al
jmp dword [eax*4 + 0x702b5d6c]
test bl, bl
je case.0x70113af9.10
mov eax, dword [ebp - 0x140]
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 0x1a
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
jne 0x70113b35
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x594], bl
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x593], bl
jmp case.0x70113af9.10
test bl, bl
je case.0x70113af9.10
mov eax, dword [ebp - 0x140]
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 0x1a
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
jne 0x70113b80
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x593], bl
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x594], bl
jmp case.0x70113af9.10
test bl, bl
je case.0x70113af9.10
imul eax, dword [ebp - 0x108], 0x368
movzx edx, bl
mov word [esi + eax + 0x568], dx
jmp case.0x70113af9.10
test bl, bl
je case.0x70113af9.10
imul edx, dword [ebp - 0x108], 0x368
movzx eax, bl
shl eax, 8
mov dword [esi + edx + 0x500], eax
jmp case.0x70113af9.10
test bl, bl
je case.0x70113af9.10
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x591], bl
jmp case.0x70113af9.10
movzx eax, word [ebp - 0x12c]
mov edx, dword [ebp - 0xb8]
mov byte [edx + eax*8 + 5], bl
jmp case.0x70113af9.10
movzx edx, word [ebp - 0x12c]
movzx eax, bl
add eax, 3
mov ecx, dword [ebp - 0xb8]
shr eax, 2
mov byte [ecx + edx*8 + 5], al
jmp case.0x70113af9.10
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x753b4]
test eax, 0x38d5420
jne 0x70113c45
test bl, bl
js 0x70113c45
add ebx, ebx
cmp bl, 0x80
ja 0x70113c57
movzx eax, bl
add eax, eax
mov dword [esi + 0x50], eax
jmp case.0x70113af9.10
test eax, 0x1000022
jne case.0x70113af9.10
mov dword [esi + 0x50], 0x100
jmp case.0x70113af9.10
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x106488
mov dword [ebp - 0x4c], 9
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
je 0x70113cac
imul eax, dword [ebp - 0x108], 0x368
test bl, bl
je 0x70113ca3
mov byte [esi + eax + 0x599], bl
jmp 0x70113cbe
mov bl, byte [esi + eax + 0x599]
jmp 0x70113cbe
test bl, bl
je 0x70113cb8
mov byte [esi + 0x599], bl
jmp 0x70113cbe
mov bl, byte [esi + 0x599]
mov edx, dword [ebp + 8]
mov cl, bl
and ecx, 0xf
mov edx, dword [edx + 0x753b4]
movzx eax, bl
mov dword [ebp - 0x130], edx
and ebx, 0xfffffff0
and edx, 0x38d5420
cmp cl, 0xf
jne 0x70113cfa
test bl, bl
je 0x70113d39
sar eax, 4
test edx, edx
mov bl, al
jne 0x70113cf3
lea ebx, [eax + eax]
movzx eax, bl
add eax, eax
jmp 0x70113d34
cmp bl, 0xf0
jne 0x70113d15
test cl, cl
je 0x70113d19
add eax, eax
mov bl, al
and ebx, 0x1e
test edx, edx
jne 0x70113d10
add ebx, ebx
movzx eax, bl
jmp 0x70113d50
test bl, bl
je 0x70113d39
sar eax, 4
test edx, edx
lea ebx, [eax*4]
je 0x70113d2a
lea ebx, [eax + eax]
movzx eax, bl
imul eax, dword [ebp - 0x120]
add dword [esi + 0x50], eax
jmp 0x70113d53
add eax, eax
mov bl, al
and ebx, 0x1e
test edx, edx
jne 0x70113d46
add ebx, ebx
movzx eax, bl
imul eax, dword [ebp - 0x120]
sub dword [esi + 0x50], eax
lea eax, [esi + 0x50]
mov dword [esp + 8], 0x100
mov dword [esp + 4], 0
mov dword [esp], eax
call method.void_OpenMPT.Limit_int__int__int__int__int_
jmp case.0x70113af9.10
cmp bl, 0x40
ja case.0x70113af9.10
imul eax, dword [ebp - 0x108], 0x368
movzx edx, bl
jmp 0x70113e38
imul eax, dword [ebp - 0x108], 0x368
test bl, bl
je 0x70113da5
mov byte [esi + eax + 0x598], bl
jmp 0x70113dac
mov bl, byte [esi + eax + 0x598]
imul eax, dword [ebp - 0x108], 0x368
mov cl, bl
mov edx, dword [esi + eax + 0x554]
mov al, bl
and eax, 0xf
and ecx, 0xfffffff0
cmp al, 0xf
jne 0x70113dd9
test cl, cl
je 0x70113df0
movzx eax, bl
sar eax, 4
add edx, eax
jmp 0x70113de7
cmp cl, 0xf0
jne 0x70113dec
test al, al
je 0x70113dfc
movzx eax, al
sub edx, eax
mov dword [ebp - 0x50], edx
jmp 0x70113e10
test al, al
je 0x70113dfc
movzx eax, al
imul eax, dword [ebp - 0x120]
jmp 0x70113de5
mov al, bl
shr al, 4
movzx eax, al
imul eax, dword [ebp - 0x120]
add eax, edx
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x50]
mov dword [esp + 8], 0x40
mov dword [esp], eax
mov dword [esp + 4], 0
call method.void_OpenMPT.Limit_int__int__int__int__int_
mov edx, dword [ebp - 0x50]
imul eax, dword [ebp - 0x108], 0x368
mov dword [esi + eax + 0x554], edx
jmp case.0x70113af9.10
mov dword [esp + 8], 8
movzx eax, bl
jmp 0x70113adf
test bl, bl
je case.0x70113af9.3
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x591], bl
xor ebx, ebx
movzx eax, bl
mov dword [esp + 4], eax
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Vibrato_OpenMPT::ModChannel__unsigned_int__const
jmp 0x70113e91
movzx eax, bl
mov dword [esp + 4], eax
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.FineVibrato_OpenMPT::ModChannel__unsigned_int__const
push eax
push eax
jmp case.0x70113af9.10
movzx eax, bl
mov dword [esp + 4], eax
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Tremolo_OpenMPT::ModChannel__unsigned_int__const
jmp 0x70113e91
movzx eax, bl
mov dword [esp + 4], eax
mov dword [esp], edi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Panbrello_OpenMPT::ModChannel__unsigned_int__const
jmp 0x70113e91
imul eax, dword [ebp - 0x108], 0x368
add eax, esi
test bl, bl
movzx edx, byte [eax + 0x581]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], edx
js 0x70113ef9
movzx eax, byte [eax + 0x5b4]
shl eax, 5
mov edx, dword [ebp + 8]
lea eax, [edx + eax + 0xdc23c]
jmp 0x70113f0b
mov eax, ebx
mov edx, dword [ebp + 8]
and eax, 0x7f
shl eax, 5
lea eax, [edx + eax + 0xdc43c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], esi
mov ecx, edx
call method.OpenMPT::CSoundFile.ProcessMIDIMacro_OpenMPT::CSoundFile::PlayState__unsigned_short__bool__OpenMPT::MIDIMacroConfigData::Macro_const__unsigned_char__unsigned_char_
sub esp, 0x18
jmp case.0x70113af9.10
movzx eax, al
jmp dword [eax*4 + 0x702b5e20]
mov ecx, ebx
call sym.OpenMPT::RowVisitor::RowVisitor____clone_.isra.0_
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.GetLengthMemory____clone_.isra.0_
mov eax, dword [ebp - 0x124]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x20