Function at 0x6297d9fc
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 - 0x128], 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 - 0x11c], eax
mov eax, dword [ebp - 0x128]
mov esi, 0x62ab8100
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 0x6297dabe
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 - 0x118]
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 - 0x118], 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 - 0x118]
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 - 0x118], 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 - 0x118]
jne 0x6297dc4a
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 0x6297e077
jns 0x6297e06b
call method.std.__throw_bad_alloc__
mov dword [esp], edi
call sym.operator_new_unsigned_int_
mov esi, eax
jmp 0x6297e079
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 - 0x118], edi
sub edi, eax
je 0x6297e0b9
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 0x6297e21e
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 0x6297e16d
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 0x6297e138
mov dword [ebx + 0x36a80], ecx
mov edx, eax
mov ecx, edx
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x6297e149
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 0x6297e200
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 0x6297e1cb
mov dword [ebx + 0x36a98], ecx
mov edx, eax
mov ecx, edx
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x6297e1dc
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 0x6297e21e
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 0x6297e2a3
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 0x6297e30c
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 0x6297e30c
mov word [ebp - 0x108], dx
mov dword [ebp - 0x110], 0
jmp 0x6297e2c3
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 0x6297e442
cmp dword [ebp - 0x11c], 2
mov dword [ebp - 0xe8], 2
jne 0x6297e442
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 0x6297e442
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 0x6297e442
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0xf8]
shl ebx, 6
add ebx, dword [eax + 0x763f8]
cmp edi, dword [ebx + 0xc]
jae 0x6297e442
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 0x6297e442
cmp byte [edi], 0xfd
ja 0x6297e42f
jne 0x6297e413
mov eax, dword [ebp + 8]
cmp word [eax + 0x753c0], 0
jne 0x6297e42f
mov ecx, edi
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x6297e43c
cmp byte [edi + 1], 0
je 0x6297e43c
mov ecx, edi
call method.OpenMPT::ModCommand.IsPortamento___const
test al, al
jne 0x6297e43c
mov eax, dword [ebp - 0x110]
mov dword [eax + ebx*8], 0xffffffff
add edi, 6
inc ebx
jmp 0x6297e3f6
mov eax, dword [ebp + 0xc]
and eax, 1
mov dword [ebp - 0x12c], eax
je 0x6297e45b
lea ecx, [esi + 0x36a74]
call sym.__ZNSt8optionalIN7OpenMPT10CSoundFile9PlayState26MIDIMacroEvaluationResultsEE7emplaceIJEEENSt9enable_ifIX18is_constructible_vI
mov byte [ebp - 0x13c], 0
mov dword [ebp - 0x120], 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 - 0x11c], 3
push ebx
jne 0x6297e4c7
fld qword [ebp - 0xa8]
fcomp qword [ebp - 0xf8]
fnstsw ax
sahf
jb 0x6297e4c7
cmp dword [ebp - 0x134], 7
mov byte [ebp - 0xc6], 1
jne 0x6297fca7
jmp 0x6297fc5b
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 0x6297e4ed
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 0x6297e533
cmp dword [ebp - 0x11c], 2
jne 0x6297e533
cmp di, word [ebp - 0xf4]
je 0x6297e4ae
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 0x6297e6c3
inc dx
mov eax, dword [esi + 0x48]
je 0x6297e577
mov edi, dword [ebp - 0x10c]
movzx ecx, ax
mov edx, dword [edi + 4]
sub edx, dword [edi]
sar edx, 1
cmp ecx, edx
jae 0x6297e577
inc eax
mov word [esi + 0x48], ax
jmp 0x6297e58e
mov edi, dword [ebp - 0x10c]
mov dx, word [edi + 0x28]
cmp dx, ax
je 0x6297e6c3
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 - 0x118], eax
sub edx, ecx
mov ebx, edi
sar edx, 1
mov eax, 0xffff
cmp edi, edx
jae 0x6297e5b8
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 0x6297e533
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 0x6297e533
cmp dword [ebp - 0x11c], 1
jbe 0x6297e646
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 0x6297e6c3
jmp 0x6297e665
mov eax, dword [esi + 0x48]
mov dword [ebp - 0xd8], 0
cmp dword [ebp - 0x11c], 0
mov word [ebp - 0xcc], ax
je 0x6297e6c3
jmp 0x6297e620
fld qword [ebp - 0xa8]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x128]
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 0x6297fc52
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 0x6297e74c
mov edi, dword [ebp - 0x10c]
cmp word [edi + 0x28], ax
jne 0x6297e746
cmp dword [ebp - 0x11c], 0
je 0x6297fc52
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 0x6297fc52
fld qword [ebp - 0xa8]
fstp qword [ebp - 0xe0]
jmp 0x6297e8b3
inc eax
jmp 0x6297f108
shl ebx, 6
mov edi, dword [ebp + 8]
add ebx, dword [edi + 0x763f8]
mov edi, dword [ebx + 0xc]
cmp dword [esi + 0x30], edi
jb 0x6297e767
mov dword [esi + 0x30], 0
cmp dword [ebp - 0x11c], 2
mov edx, dword [esi + 0x30]
jne 0x6297e789
cmp word [ebp - 0xf4], ax
jne 0x6297e794
cmp dword [ebp - 0xf8], edx
jne 0x6297e794
jmp 0x6297e4ae
xor ebx, ebx
cmp dword [ebp - 0x11c], 3
je 0x6297e7c8
mov edi, dword [ebp - 0x148]
xor ebx, ebx
cmp edi, dword [ebp - 0x58]
ja 0x6297e7c8
fld dword [0x62b1e3f0]
cmp edi, 0x100
fstp qword [ebp - 0xa8]
jbe 0x6297e7bb
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 0x6297e80b
cmp dword [ebp - 0x11c], 1
ja 0x6297e87f
jmp 0x6297e85f
test bl, bl
jne 0x6297e800
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 0x6297e8f2
mov dword [esi + 0x30], 0
jmp 0x6297e8f2
mov eax, dword [esi + 0x48]
mov word [ebp - 0xcc], ax
mov eax, dword [esi + 0x30]
cmp dword [ebp - 0x11c], 0
mov dword [ebp - 0xd8], eax
je 0x6297fc52
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 0x6297fc52
fld qword [ebp - 0xa8]
fstp qword [ebp - 0xe0]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x128]
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 0x6297e476
cmp byte [ebp - 0x110], 0
jne 0x6297e476
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 - 0x118], al
movzx edi, word [ebp - 0x108]
mov eax, dword [ebp + 8]
cmp di, word [eax + 0x753bc]
jae 0x6297eb3c
mov ecx, ebx
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne 0x6297e9ff
cmp byte [ebp - 0x118], 0
je 0x6297e986
mov eax, edi
mov edx, dword [ebp + 8]
shl eax, 5
test byte [edx + eax + 0x75419], 4
jne 0x6297e9ff
mov al, byte [ebx]
add eax, 5
cmp al, 1
ja 0x6297ea23
cmp byte [esi + 0x36aa4], 0
je 0x6297e9ff
mov al, byte [ebx + 1]
lea edx, [eax - 1]
cmp dl, 0xf9
ja 0x6297e9ff
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 [0x62b1e3e4]
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 0x6297eb2d
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 0x6297eb19
ja 0x6297ea58
cmp al, 0x10
je 0x6297ea61
cmp al, 0x11
je 0x6297ea67
jmp 0x6297eb2d
cmp al, 0x14
je 0x6297eaab
jmp 0x6297eb2d
movzx eax, byte [ebx + 5]
jmp 0x6297ea95
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 0x6297eb2d
movzx eax, byte [ebx + 5]
test al, al
je 0x6297eb2d
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 0x6297eb2d
mov al, byte [edx + 0x581]
test al, al
jne 0x6297eac4
mov ecx, dword [ebp + 8]
test dword [ecx + 0x753b4], 0x1000022
jne 0x6297ead3
imul edx, edi, 0x368
mov byte [esi + edx + 0x5a9], al
jmp 0x6297eadf
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 0x6297eaf3
and edx, 0xf
add dword [esi + 0x18], edx
jmp 0x6297eb2d
cmp al, 0xe0
jne 0x6297eb2d
cmp dword [esi + 0x14], 0
jne 0x6297eb2d
mov eax, dword [ebp + 8]
and edx, 0xf
test byte [eax + 0x753b4], 2
je 0x6297eb10
test dl, dl
je 0x6297eb2d
movzx edx, dl
inc edx
mov dword [esi + 0x14], edx
jmp 0x6297eb2d
mov al, byte [ebx + 5]
mov dl, al
and edx, 0xfffffff0
cmp dl, 0xe0
jne 0x6297eb2d
and eax, 0xf
inc eax
mov dword [esi + 0x14], eax
inc word [ebp - 0x108]
add ebx, 6
jmp 0x6297e945
mov ecx, esi
call method.OpenMPT::CSoundFile::PlayState.TicksOnRow___const
mov dword [ebp - 0x118], eax
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x6297eb55
mov eax, 1
mov edi, dword [ebp - 0x118]
mov dword [esi + 0x40], 0xffffffff
sub edi, eax
mov dword [esi + 0x3c], 0xffffffff
mov dword [ebp - 0x124], edi
mov word [esi + 0x44], 0xffff
mov word [ebp - 0x130], 0
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x130]
cmp di, word [eax + 0x753bc]
jae 0x6297f0bf
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.0x62980090.1
lea eax, [esi + ebx + 0x268]
mov dword [ebp - 0x110], eax
lea eax, [esi + ebx]
cmp dword [ebp - 0x12c], 0
movzx edi, byte [eax + 0x57f]
mov bl, byte [eax + 0x581]
je 0x62980082
mov dl, byte [eax + 0x57c]
mov byte [ebp - 0x14c], dl
mov dl, byte [eax + 0x57d]
test dl, dl
je 0x6297ec1f
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 0x6297ec4b
imul eax, dword [ebp - 0x108], 0x368
cmp byte [esi + eax + 0x57d], 0
jne 0x6297ed0b
jmp 0x6297edb9
imul eax, dword [ebp - 0x108], 0x368
mov dl, byte [ebp - 0x14c]
mov ecx, dword [ebp - 0x110]
mov byte [esi + eax + 0x587], dl
call method.OpenMPT::ModChannel.RestorePanAndFilter__
cmp dword [ebp - 0x134], 7
jne 0x6297ec89
movzx eax, word [ebp - 0x130]
mov edx, dword [ebp - 0xb8]
cmp dword [edx + eax*8], 0xffffffff
jne 0x6297ecf8
imul eax, dword [ebp - 0x108], 0x368
add eax, esi
mov edx, dword [eax + 0x4f8]
movzx eax, byte [eax + 0x58b]
test al, al
je 0x6297ecbe
mov ecx, dword [ebp + 8]
movzx ecx, word [ecx + 0x753c0]
cmp eax, ecx
jg 0x6297ecbe
mov edx, dword [ebp + 8]
mov edx, dword [edx + eax*4 + 0xdbd1c]
test edx, edx
je 0x6297ecf8
mov al, byte [edx + 0x15]
test al, al
jns 0x6297ecdd
imul ecx, dword [ebp - 0x108], 0x368
and eax, 0x7f
mov byte [esi + ecx + 0x5ad], al
mov al, byte [edx + 0x16]
test al, al
jns 0x6297ecf8
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 0x6297ec2e
imul eax, dword [ebp - 0x108], 0x368
movzx eax, byte [esi + eax + 0x58b]
test al, al
je 0x6297ed5a
mov edx, dword [ebp + 8]
movzx edx, word [edx + 0x753c0]
cmp eax, edx
jg 0x6297ed5a
mov edx, dword [ebp + 8]
mov eax, dword [edx + eax*4 + 0xdbd1c]
test eax, eax
je 0x6297ed5a
test byte [eax + 0xf], 1
je 0x6297ed5a
mov dword [esp + 4], edx
mov ecx, dword [ebp - 0x110]
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 0x6297edb9
movzx eax, ax
imul eax, eax, 0x68
add eax, dword [ebp + 8]
test byte [eax + 0x7643e], 0x20
je 0x6297edb9
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x110]
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 0x6297edf1
cmp al, 2
ja 0x6297edf7
dec al
jne 0x6297ee4b
movzx eax, word [ebp - 0x130]
mov ecx, dword [ebp - 0xb8]
mov dl, byte [edx + 0x580]
mov byte [ecx + eax*8 + 5], dl
jmp 0x6297ee4b
cmp al, 0xb
je 0x6297ee09
jmp 0x6297ee4b
mov al, byte [edx + 0x580]
test al, al
je 0x6297ee4b
mov byte [edx + 0x5aa], al
jmp 0x6297ee4b
cmp byte [edx + 0x580], 0
je 0x6297ee4b
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
je 0x6297ee4b
xor edi, edi
jmp case.0x6298049b.10
lea eax, [edi - 0xc]
cmp al, 0x10
jbe 0x629808ed
lea eax, [edi - 2]
cmp al, 0x2c
jbe 0x62980498
imul eax, dword [ebp - 0x108], 0x368
lea edx, [esi + eax]
mov al, byte [edx + 0x57e]
cmp al, 7
je 0x6297eead
cmp al, 8
je 0x6297eef0
cmp al, 2
jne 0x6297ef0e
mov dword [esp + 8], 6
mov ecx, dword [ebp + 8]
movzx eax, byte [edx + 0x580]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.Panning_OpenMPT::ModChannel__unsigned_int__OpenMPT::CSoundFile::PanningType__const
sub esp, 0xc
jmp 0x6297ef0e
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov dword [ebp - 0x138], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 0x15
call method.std::bitset_122u_::reference.operator_bool___const
mov edx, dword [ebp - 0x138]
mov cl, al
test cl, cl
movzx eax, byte [edx + 0x580]
je 0x6297eeeb
and eax, 0xf
mov byte [edx + 0x59f], al
jmp 0x6297ef0e
shl eax, 4
jmp 0x6297eef7
movzx eax, byte [edx + 0x580]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
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 0x6297efca
ja 0x6297ef37
and eax, 0xfffffffd
cmp al, 5
jne 0x6297f073
jmp 0x6297ef48
cmp al, 0x1a
je 0x6297ef48
cmp al, 0x1b
je 0x6297f049
jmp 0x6297f073
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x124]
test dword [edx + 0x753b4], 0x1000020
je 0x6297ef72
test byte [edx + 0x753d0], 4
mov eax, dword [ebp - 0x118]
je 0x6297ef72
mov eax, dword [ebp - 0x124]
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 - 0x138], 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 - 0x138]
test al, al
je 0x6297efb4
shl edx, 2
imul eax, dword [ebp - 0x108], 0x368
add byte [esi + eax + 0x59b], dl
jmp 0x6297f073
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x124]
test dword [edx + 0x753b4], 0x1000020
je 0x6297eff4
test byte [edx + 0x753d0], 4
mov eax, dword [ebp - 0x118]
je 0x6297eff4
mov eax, dword [ebp - 0x124]
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 - 0x138], 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 - 0x138]
test al, al
je 0x6297f036
shl edx, 2
imul eax, dword [ebp - 0x108], 0x368
add byte [esi + eax + 0x59c], dl
jmp 0x6297f073
mov eax, dword [ebp - 0x118]
lea ecx, [eax - 1]
mov al, byte [edx + 0x5a5]
imul eax, ecx
add byte [edx + 0x59d], al
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
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 al, al
je case.0x62980090.1
mov eax, edi
test al, al
je case.0x62980090.1
test bl, bl
je case.0x62980090.1
movzx eax, bl
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp + 8]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.UpdateS3MEffectMemory_OpenMPT::ModChannel__unsigned_char__const
push ecx
push ecx
inc word [ebp - 0x130]
jmp 0x6297eb80
mov eax, dword [ebp + 8]
cmp dword [eax + 0x753b4], 4
jne 0x6297f0d4
cmp dword [esi + 0x28], 0xffff
je 0x6297f0ff
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 0x6297f111
mov dword [esi + 0x20], edx
jmp 0x6297f111
mov eax, dword [esi + 0x30]
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x48]
mov word [esi + 0x4a], ax
jmp 0x6297e476
mov dword [esp], esi
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.GetTickDuration_OpenMPT::CSoundFile::PlayState__const
mov ecx, dword [ebp - 0x118]
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 0x6297fc1b
mov word [ebp - 0x13c], 0
movzx edi, word [ebp - 0x13c]
mov eax, dword [ebp + 8]
cmp di, word [eax + 0x753bc]
jae 0x6297fc1b
lea eax, [edi*8]
mov ebx, dword [ebp - 0xb8]
add ebx, eax
mov dword [ebp - 0x15c], eax
cmp dword [ebx], 0xffffffff
je 0x6297fc0f
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 - 0x124], edx
jne 0x6297f1f3
mov ecx, edx
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne 0x6297fc0f
imul eax, edi, 0x368
mov ecx, dword [ebp - 0x124]
lea edx, [esi + eax]
mov dword [ebp - 0x140], edx
mov al, byte [edx + 0x581]
mov byte [ebp - 0x110], al
and eax, 0xf
mov byte [ebp - 0x151], al
mov eax, dword [ebp - 0x110]
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 0x6297f250
mov dword [edx + 0x4fc], 0
mov ecx, dword [ebp - 0x124]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x6297f481
cmp byte [ebp - 0x14c], 0
je 0x6297f2c0
cmp byte [ebx + 4], 0
je 0x6297f2c0
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 0x6297f31e
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 - 0x110]
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 0x6297f3e3
mov al, byte [eax + 0x581]
and eax, 0xfffffff0
cmp al, 0xd0
jne 0x6297f3fc
mov eax, dword [ebp - 0x130]
cmp dword [ebp - 0x118], eax
mov dword [ebp - 0x110], eax
jbe 0x6297f3fc
jmp 0x6297f406
mov eax, dword [ebp - 0x140]
cmp dword [ebp - 0x118], eax
mov dword [ebp - 0x110], eax
jbe 0x6297f3fc
cmp dl, 0x21
je 0x6297f406
mov dword [ebp - 0x110], 0
mov eax, dword [esi + 0x14]
cmp eax, 1
jbe 0x6297f436
cmp dword [ebp - 0x110], 0
je 0x6297f436
mov ecx, dword [ebp + 8]
test dword [ecx + 0x753b4], 0x1000022
je 0x6297f436
mov ecx, dword [esi + 0x28]
dec eax
add ecx, dword [esi + 0x18]
imul eax, ecx
add dword [ebp - 0x110], eax
cmp byte [ebp - 0x14c], 0
jne 0x6297f445
mov dword [ebx], 0
cmp dl, 9
je 0x6297f46c
cmp dword [ebp - 0x140], 8
jne 0x6297f45c
cmp byte [ebp - 0x150], 1
jbe 0x6297f46c
imul eax, edi, 0x368
cmp byte [esi + eax + 0x57e], 2
jne 0x6297f48b
imul eax, edi, 0x368
mov ebx, dword [ebp - 0x158]
mov dword [esi + eax + 0x51c], ebx
jmp 0x6297f48b
mov dword [ebp - 0x110], 0
mov ecx, dword [ebp - 0x124]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x6297f4bc
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 0x6297f5cc
imul edx, edi, 0x368
add edx, esi
mov al, byte [edx + 0x57f]
cmp al, 0xa
jne 0x6297f4ef
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 0x6297f5cc
cmp al, 0x2c
jne 0x6297f518
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 0x6297f5b5
cmp al, 0x2a
jne 0x6297f579
cmp dword [edx + 0x2d0], 0
je 0x6297f579
mov eax, dword [ebp - 0x120]
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 - 0x110], eax
jmp 0x6297f5cc
imul edx, edi, 0x368
add edx, esi
cmp byte [edx + 0x57e], 0xf
jne 0x6297f5cc
mov ecx, dword [edx + 0x2d0]
test ecx, ecx
je 0x6297f5cc
movzx eax, byte [edx + 0x580]
cmp al, 9
ja 0x6297f5cc
test al, al
jne 0x6297f5ab
mov eax, dword [edx + 0x500]
jmp 0x6297f5b5
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 0x6297f657
jne 0x6297f5f1
mov eax, dword [ebp + 8]
cmp word [eax + 0x753c0], 0
jne 0x6297f657
imul eax, edi, 0x368
add eax, esi
mov cl, byte [eax + 0x57f]
lea edx, [ecx - 0x13]
cmp dl, 1
ja 0x6297f62a
mov al, byte [eax + 0x581]
mov ebx, dword [ebp - 0x130]
and eax, 0xfffffff0
cmp al, 0xc0
sete dl
cmp dword [ebp - 0x118], ebx
seta al
and dl, al
je 0x6297f651
jmp 0x6297f657
cmp cl, 0x21
jne 0x6297f651
xor edx, edx
cmp byte [ebp - 0x151], 0
je 0x6297f657
mov eax, dword [ebp - 0x130]
add eax, dword [ebp - 0x110]
cmp eax, dword [ebp - 0x118]
setb dl
jmp 0x6297f657
cmp cl, 0x19
sete dl
imul ecx, edi, 0x368
add ecx, esi
mov al, byte [ecx + 0x57f]
cmp al, 0xd
jne 0x6297f672
movzx eax, byte [ecx + 0x581]
jmp 0x6297f68f
cmp al, 0x2e
jne 0x6297f67f
movzx eax, byte [ecx + 0x581]
jmp 0x6297f692
cmp byte [ecx + 0x57e], 1
jne 0x6297f698
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 0x6297f6e5
test dl, dl
jne 0x6297f6e9
mov cl, byte [eax + 0x57f]
cmp cl, 0x2e
ja 0x6297f706
movzx edx, cl
shr edx, 5
mov ebx, 1
shl ebx, cl
test dword [ebp + edx*4 - 0xe8], ebx
jne 0x6297f6e9
cmp cl, 0x13
jne 0x6297f706
mov al, byte [eax + 0x581]
and eax, 0xfffffff0
sub eax, 0x10
test al, 0xe0
jne 0x6297f706
jmp 0x6297f6e9
test dl, dl
je 0x6297f706
mov ecx, dword [ebp - 0x108]
call method.OpenMPT::ModChannel.Stop__
mov eax, dword [ebp - 0xb8]
mov dword [eax + edi*8], 0
jmp 0x6297fc0f
mov ebx, dword [ebp - 0x138]
cmp dword [ebp - 0x120], ebx
je 0x6297f740
cmp dword [ebp - 0x120], 0
je 0x6297f740
mov eax, dword [ebp - 0x120]
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 0x6297f8bf
ja 0x6297f777
cmp al, 0xb
je 0x6297f7b1
ja 0x6297f76a
sub eax, 6
cmp al, 1
jbe 0x6297f7b1
jmp 0x6297fa14
cmp al, 0x13
je 0x6297f833
jmp 0x6297fa14
cmp al, 0x24
ja 0x6297f788
cmp al, 0x22
jbe 0x6297fa14
jmp 0x6297f9c6
cmp al, 0x2d
jne 0x6297fa14
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 0x6297f9c2
imul eax, edi, 0x368
cmp byte [esi + eax + 0x581], 0
jne 0x6297f7d1
mov eax, dword [ebp + 8]
cmp dword [eax + 0x753b4], 1
je 0x6297fa14
imul eax, edi, 0x368
xor ebx, ebx
mov dword [ebp - 0x140], eax
cmp ebx, dword [ebp - 0x118]
je 0x6297fa14
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 0x6297f7df
test byte [edx + 0x581], 0xf
jne 0x6297f84f
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x100004
je 0x6297fa14
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 0x6297f897
cmp al, 0xb0
jne 0x6297fa14
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 0x6297f8b7
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 0x6297fa14
movzx eax, byte [edx + 0x581]
cmp al, 0x9e
jne 0x6297f903
mov eax, dword [ebp - 0x120]
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 0x6297fa14
cmp al, 0x9f
jne 0x6297f99f
mov eax, dword [ebp - 0x120]
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 0x6297fa14
mov ebx, dword [eax + 0x2b4]
test ebx, ebx
je 0x6297fa14
mov ecx, dword [ebp - 0x124]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x6297f984
test byte [ebp - 0x130], 2
jne 0x6297fa14
imul eax, edi, 0x368
add eax, esi
dec ebx
mov dword [eax + 0x268], 0xffffffff
mov dword [eax + 0x26c], ebx
jmp 0x6297fa14
mov dl, al
and edx, 0xfffffff0
cmp dl, 0x70
jne 0x6297fa14
cmp al, 0x72
jbe 0x6297fa14
mov ebx, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov ecx, dword [ebp - 0x108]
call fcn.62983960
push ecx
push ecx
jmp 0x6297fa14
mov eax, dword [ebp - 0x120]
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 0x6297fa9c
ja 0x6297fa4f
cmp dl, 5
je 0x6297fa5d
cmp dl, 2
jbe 0x6297fba7
jmp 0x6297fae1
cmp dl, 0xe
je 0x6297fb8b
jmp 0x6297fba7
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 0x6297fad9
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 0x6297fba7
mov al, byte [ebx + 0x580]
mov byte [ebp - 0x130], al
test al, al
jne 0x6297fb2b
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 0x6297fb2b
mov al, byte [ebx + 0x5aa]
mov byte [ebp - 0x130], al
test al, al
je 0x6297fba7
cmp dl, 3
jne 0x6297fb37
shl byte [ebp - 0x130], 4
imul eax, edi, 0x368
xor ebx, ebx
mov dword [ebp - 0x140], eax
cmp ebx, dword [ebp - 0x118]
je 0x6297fba7
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 0x6297fb45
mov dl, byte [ebx + 0x580]
cmp dl, 1
ja 0x6297fba7
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 0x6297fc0f
mov ecx, dword [ebp - 0x124]
call method.OpenMPT::ModCommand.IsAnyPitchSlide___const
mov bl, al
mov eax, dword [ebp - 0x15c]
add eax, dword [ebp - 0xb8]
mov edx, dword [ebp - 0x118]
mov ecx, dword [eax]
add edx, ecx
test bl, bl
je 0x6297fc07
add ecx, dword [ebp - 0x110]
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 0x6297fc0f
sub edx, dword [ebp - 0x110]
mov dword [eax], edx
inc word [ebp - 0x13c]
jmp 0x6297f185
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 - 0x120], eax
jmp 0x6297e476
cmp dword [ebp - 0x134], 7
jne 0x6297fc9e
xor ebx, ebx
mov eax, dword [ebp + 8]
cmp bx, word [eax + 0x753bc]
jae 0x6297fc9e
movzx eax, bx
mov edx, dword [ebp - 0xb8]
cmp dword [edx + eax*8], 0xffffffff
je 0x6297fc9b
mov edi, dword [ebp - 0x120]
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 0x6297fc5d
cmp byte [ebp - 0xc6], 0
je 0x6297fcba
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 - 0x128]
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 - 0x12c], 0
push eax
je 0x62980019
cmp byte [ebp - 0xc6], 0
jne 0x6297fcfe
cmp dword [ebp - 0x11c], 0
jne 0x6297ffc3
mov byte [ebp - 0x20], 0
lea ebx, [esi + 0x36a74]
cmp byte [esi + 0x36aa4], 0
je 0x6297fd1d
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 0x6297fda6
xor ebx, ebx
jmp 0x6297fe01
call method.OpenMPT::OPL.Reset__
jmp 0x6297fda2
movzx esi, bx
imul eax, esi, 0x368
add eax, dword [ebp + 8]
mov dl, byte [eax + 0x106a4f]
test dl, dl
je 0x6297fdc9
mov byte [eax + 0x106a52], dl
mov eax, dword [ebp - 0xb8]
lea eax, [eax + esi*8]
cmp byte [eax + 5], 0xff
jne 0x6297fe0f
imul eax, esi, 0x368
mov edi, dword [ebp + 8]
mov eax, dword [edi + eax + 0x106798]
test eax, eax
jne 0x6297fe39
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 0x6297fdad
jmp 0x6297fe7a
cmp dword [ebp - 0x134], 7
je 0x6297fdd8
imul edx, esi, 0x368
movzx eax, byte [eax + 5]
add edx, dword [ebp + 8]
cmp al, 0x40
jbe 0x6297fe2e
mov eax, 0x40
shl eax, 2
mov dword [edx + 0x1069e0], eax
jmp 0x6297fdd8
test byte [eax + 0x23], 2
je 0x6297fdec
mov ecx, dword [edi + 0x13cfa0]
test ecx, ecx
je 0x6297fdec
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 0x6297fdec
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 0x6297ff3e
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 0x6297ff2f
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 0x6297ff19
cmp edx, 0xf9
jbe 0x6297fefa
mov dword [esp + 0xc], 0xfa
mov dword [esp + 8], edx
mov dword [esp + 4], 0x62b1e265
mov dword [esp], 0x62b1e271
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 0x6297fe8c
xor eax, eax
cmp dword [ebp + eax*4 - 0xa0], 0
jne 0x6297ff58
inc eax
cmp eax, 8
jne 0x6297ff40
mov eax, dword [ebp - 0x44]
lea ebx, [ebp - 0x4c]
jmp 0x6297ff94
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 0x6297ff89
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 0x6297ff5a
jmp 0x6297ff50
cmp eax, ebx
je 0x6297ffb9
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 0x6297ff94
lea ecx, [ebp - 0x50]
call method.std::_Optional_payload_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_._M_reset__
jmp 0x6297fff3
cmp dword [ebp + 0xc], 3
je 0x6297fff3
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 0x62980019
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 0x629808f7
mov eax, dword [ebp + 8]
mov dword [esp], ebx
lea ecx, [eax + 0x13cf70]
call method.OpenMPT::RowVisitor.MoveVisitedRowsFrom_OpenMPT::RowVisitor_
push eax
jmp 0x629808f7
lea eax, [edi - 0xc]
cmp al, 0x10
ja case.0x62980090.1
movzx eax, al
jmp dword [eax*4 + 0x62b1e2a8]
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
mov edi, 0xc
push eax
push eax
jmp 0x629803c6
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]
mov edi, 0xe
call method.OpenMPT::CSoundFile.PatternBreak_OpenMPT::CSoundFile::PlayState__unsigned_short__unsigned_char__const
sub esp, 0xc
cmp eax, 0xffffffff
je 0x629803c6
mov dword [esi + 0x3c], eax
jmp 0x629803c6
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 0x6298026a
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 ecx, eax, 0x2710
sub esp, 0x10
cmp dword [ebp - 0x12c], 0
je 0x6298019e
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x1000022
je 0x6298019e
imul eax, dword [ebp - 0x108], 0x368
cmp ecx, 0x270f
jbe 0x62980190
mov dword [ebp - 0x138], eax
mov edi, 0x2710
mov eax, ecx
xor edx, edx
div edi
mov edi, dword [ebp - 0x138]
mov byte [esi + edi + 0x5ab], al
jmp 0x6298019e
movzx ecx, byte [esi + eax + 0x5ab]
imul ecx, ecx, 0x2710
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x14c], eax
imul eax, dword [eax + 0x18], 0x2710
cmp ecx, 0x4e1ff
mov dword [ebp - 0x138], eax
jbe 0x629801cf
cmp eax, ecx
jb 0x62980261
mov dword [esi + 0x2c], ecx
jmp 0x6298026a
mov edi, 0x2710
xor edx, edx
mov eax, ecx
div edi
mov edi, eax
and eax, 0xf0
and edi, 0xf
mov edx, dword [esi + 0x2c]
imul edi, dword [ebp - 0x124]
imul edi, edi, 0x2710
cmp eax, 0x10
jne 0x62980200
add edi, edx
mov dword [esi + 0x2c], edi
jmp 0x62980212
cmp edi, edx
jae 0x6298020b
sub edx, edi
mov dword [esi + 0x2c], edx
jmp 0x62980212
mov dword [esi + 0x2c], 0
mov eax, dword [ebp - 0x14c]
lea ecx, [ebp - 0x50]
imul edi, dword [eax + 0x14], 0x2710
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x4c], 8
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
je 0x62980245
mov dword [ebp - 0x138], 0x26e8f0
cmp edi, dword [ebp - 0x138]
ja 0x6298026a
mov eax, dword [esi + 0x2c]
cmp edi, eax
jbe 0x62980259
mov dword [esi + 0x2c], edi
jmp 0x6298026a
cmp dword [ebp - 0x138], eax
jae 0x6298026a
mov eax, dword [ebp - 0x138]
mov dword [esi + 0x2c], eax
mov edi, 0x11
jmp 0x629803c6
mov al, bl
and eax, 0xfffffff0
cmp al, 0xb0
je 0x6298030c
ja 0x629802aa
cmp al, 0x90
je 0x629802cd
cmp al, 0xa0
jne 0x6298043d
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5ac], dl
jmp 0x6298043d
cmp al, 0xf0
jne 0x6298043d
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5b4], dl
jmp 0x6298043d
cmp bl, 0x91
ja 0x6298043d
imul eax, dword [ebp - 0x108], 0x368
mov edx, dword [esi + eax + 0x2c0]
mov eax, edx
and ah, 0xfe
cmp bl, 0x91
jne 0x629802f6
mov eax, edx
or ah, 1
imul edx, dword [ebp - 0x108], 0x368
mov dword [esi + edx + 0x2c0], eax
jmp 0x6298043d
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 0x6298043d
mov al, bl
and eax, 0xfffffff0
cmp al, 0x60
je 0x6298035e
cmp al, 0xf0
jne 0x629803d8
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5b4], dl
jmp 0x62980486
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 0x62980486
mov al, bl
and eax, 0xfffffff0
cmp al, 0xa0
jne 0x629803c1
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 0x629803c1
imul eax, dword [ebp - 0x108], 0x368
mov dl, bl
and edx, 0xf
mov byte [esi + eax + 0x5ac], dl
mov edi, 0x1c
cmp dword [ebp - 0x12c], 0
je case.0x62980090.1
jmp case.0x6298049b.10
cmp dword [ebp - 0x12c], 0
je case.0x62980090.1
cmp bl, 0xf
jbe 0x629803f1
mov edi, 0x13
jmp case.0x6298049b.18
mov edi, dword [ebp + 8]
mov cl, bl
and ecx, 1
mov eax, esi
movzx edx, word [edi + 0x753bc]
imul edx, edx, 0x368
mov byte [ebp - 0x138], cl
add edx, esi
cmp edx, eax
je 0x629803ea
mov edi, dword [eax + 0x2c0]
mov ecx, edi
and ch, 0xbf
cmp byte [ebp - 0x138], 0
jne 0x62980430
or edi, 0x4000
mov ecx, edi
mov dword [eax + 0x2c0], ecx
add eax, 0x368
jmp 0x62980410
cmp dword [ebp - 0x12c], 0
mov edi, 0x14
je case.0x62980090.1
mov al, bl
and eax, 0xfffffff0
cmp al, 0x80
jne case.0x6298049b.10
mov eax, ebx
mov dword [esp + 8], 4
and eax, 0xf
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Panning_OpenMPT::ModChannel__unsigned_int__OpenMPT::CSoundFile::PanningType__const
sub esp, 0xc
jmp case.0x6298049b.10
cmp dword [ebp - 0x12c], 0
je case.0x62980090.1
jmp 0x629803ea
movzx eax, al
jmp dword [eax*4 + 0x62b1e2ec]
test bl, bl
je case.0x6298049b.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 0x629804d7
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.0x6298049b.10
test bl, bl
je case.0x6298049b.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 0x62980522
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.0x6298049b.10
test bl, bl
je case.0x6298049b.10
imul eax, dword [ebp - 0x108], 0x368
movzx edx, bl
mov word [esi + eax + 0x568], dx
jmp case.0x6298049b.10
test bl, bl
je case.0x6298049b.10
imul edx, dword [ebp - 0x108], 0x368
movzx eax, bl
shl eax, 8
mov dword [esi + edx + 0x500], eax
jmp case.0x6298049b.10
test bl, bl
je case.0x6298049b.10
imul eax, dword [ebp - 0x108], 0x368
mov byte [esi + eax + 0x591], bl
jmp case.0x6298049b.10
movzx eax, word [ebp - 0x130]
mov edx, dword [ebp - 0xb8]
mov byte [edx + eax*8 + 5], bl
jmp case.0x6298049b.10
movzx edx, word [ebp - 0x130]
movzx eax, bl
add eax, 3
mov ecx, dword [ebp - 0xb8]
shr eax, 2
mov byte [ecx + edx*8 + 5], al
jmp case.0x6298049b.10
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x753b4]
test eax, 0x38d5420
jne 0x629805e7
test bl, bl
js 0x629805e7
add ebx, ebx
cmp bl, 0x80
ja 0x629805f9
movzx eax, bl
add eax, eax
mov dword [esi + 0x50], eax
jmp case.0x6298049b.10
test eax, 0x1000022
jne case.0x6298049b.10
mov dword [esi + 0x50], 0x100
jmp case.0x6298049b.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 0x6298064e
imul eax, dword [ebp - 0x108], 0x368
test bl, bl
je 0x62980645
mov byte [esi + eax + 0x599], bl
jmp 0x62980660
mov bl, byte [esi + eax + 0x599]
jmp 0x62980660
test bl, bl
je 0x6298065a
mov byte [esi + 0x599], bl
jmp 0x62980660
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 - 0x138], edx
and ebx, 0xfffffff0
and edx, 0x38d5420
cmp cl, 0xf
jne 0x6298069c
test bl, bl
je 0x629806db
sar eax, 4
test edx, edx
mov bl, al
jne 0x62980695
lea ebx, [eax + eax]
movzx eax, bl
add eax, eax
jmp 0x629806d6
cmp bl, 0xf0
jne 0x629806b7
test cl, cl
je 0x629806bb
add eax, eax
mov bl, al
and ebx, 0x1e
test edx, edx
jne 0x629806b2
add ebx, ebx
movzx eax, bl
jmp 0x629806f2
test bl, bl
je 0x629806db
sar eax, 4
test edx, edx
lea ebx, [eax*4]
je 0x629806cc
lea ebx, [eax + eax]
movzx eax, bl
imul eax, dword [ebp - 0x124]
add dword [esi + 0x50], eax
jmp 0x629806f5
add eax, eax
mov bl, al
and ebx, 0x1e
test edx, edx
jne 0x629806e8
add ebx, ebx
movzx eax, bl
imul eax, dword [ebp - 0x124]
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.0x6298049b.10
cmp bl, 0x40
ja case.0x6298049b.10
imul eax, dword [ebp - 0x108], 0x368
movzx edx, bl
jmp 0x629807da
imul eax, dword [ebp - 0x108], 0x368
test bl, bl
je 0x62980747
mov byte [esi + eax + 0x598], bl
jmp 0x6298074e
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 0x6298077b
test cl, cl
je 0x62980792
movzx eax, bl
sar eax, 4
add edx, eax
jmp 0x62980789
cmp cl, 0xf0
jne 0x6298078e
test al, al
je 0x6298079e
movzx eax, al
sub edx, eax
mov dword [ebp - 0x50], edx
jmp 0x629807b2
test al, al
je 0x6298079e
movzx eax, al
imul eax, dword [ebp - 0x124]
jmp 0x62980787
mov al, bl
shr al, 4
movzx eax, al
imul eax, dword [ebp - 0x124]
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.0x6298049b.10
mov dword [esp + 8], 8
movzx eax, bl
jmp 0x62980469
test bl, bl
je case.0x6298049b.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 eax, dword [ebp - 0x110]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Vibrato_OpenMPT::ModChannel__unsigned_int__const
jmp 0x6298083f
movzx eax, bl
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.FineVibrato_OpenMPT::ModChannel__unsigned_int__const
push eax
push eax
jmp case.0x6298049b.10
movzx eax, bl
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Tremolo_OpenMPT::ModChannel__unsigned_int__const
jmp 0x6298083f
movzx eax, bl
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x110]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Panbrello_OpenMPT::ModChannel__unsigned_int__const
jmp 0x6298083f
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 0x629808b3
movzx eax, byte [eax + 0x5b4]
shl eax, 5
mov edx, dword [ebp + 8]
lea eax, [edx + eax + 0xdc23c]
jmp 0x629808c5
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.0x6298049b.10
movzx eax, al
jmp dword [eax*4 + 0x62b1e3a0]
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 - 0x128]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x20