Function at 0x6297dec0
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 - 0x12c], ecx
mov ecx, 6
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x100]
lea edi, [ebp - 0xe0]
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp - 0xfc]
mov word [ebp - 0x108], ax
mov eax, dword [ebp - 0xf0]
mov dword [ebp - 0x120], eax
mov eax, dword [ebp - 0x12c]
mov esi, 0x62aba100
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 - 0x138], 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 - 0x110], eax
sub eax, edx
sar eax, 2
imul eax, eax, 0xba2e8ba3
cmp byte [ebp - 0x13a], al
jb 0x6297df82
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 - 0x110], 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]
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]
lea eax, [ebx + 0x268]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp + 8]
lea edx, [edi + 0x106730]
lea edi, [ebx + 0x36a68]
mov dword [ebp - 0x118], edi
mov ecx, dword [edx + 0x10]
mov esi, dword [edx]
mov dword [eax + 0x10], ecx
mov ecx, dword [edx + 0x14]
mov dword [eax + 0x14], ecx
mov ecx, dword [edx + 0x18]
mov dword [eax + 0x18], ecx
mov ecx, dword [edx + 0x1c]
mov dword [eax + 0x1c], ecx
mov ecx, dword [edx + 0x20]
mov edi, dword [edx + 4]
mov dword [eax + 0x20], ecx
mov ecx, dword [edx + 0x24]
mov dword [eax], esi
mov dword [eax + 4], edi
mov esi, dword [edx + 8]
mov edi, dword [edx + 0xc]
mov dword [eax + 0x24], ecx
mov ecx, dword [edx + 0x28]
mov dword [eax + 8], esi
mov dword [eax + 0xc], edi
mov dword [eax + 0x28], ecx
lea edi, [eax + 0x2c]
lea esi, [edx + 0x2c]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [edx + 0x3c]
lea edi, [eax + 0x70]
mov dword [eax + 0x3c], ecx
mov ecx, dword [edx + 0x40]
mov dword [eax + 0x40], ecx
mov ecx, dword [edx + 0x44]
mov dword [eax + 0x44], ecx
mov ecx, dword [edx + 0x48]
mov dword [eax + 0x48], ecx
mov ecx, dword [edx + 0x4c]
mov dword [eax + 0x4c], ecx
mov ecx, dword [edx + 0x50]
mov dword [eax + 0x50], ecx
mov ecx, dword [edx + 0x54]
mov dword [eax + 0x54], ecx
mov ecx, dword [edx + 0x58]
mov dword [eax + 0x58], ecx
mov ecx, dword [edx + 0x5c]
mov dword [eax + 0x5c], ecx
mov ecx, dword [edx + 0x60]
mov dword [eax + 0x60], ecx
mov ecx, dword [edx + 0x64]
mov dword [eax + 0x64], ecx
mov ecx, dword [edx + 0x68]
mov dword [eax + 0x68], ecx
lea esi, [edx + 0x70]
mov ecx, 0x88
add eax, 0x368
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [edx + 0x290]
add edx, 0x368
mov dword [eax - 0xd8], ecx
mov ecx, dword [edx - 0xd4]
mov dword [eax - 0xd4], ecx
mov ecx, dword [edx - 0xd0]
mov dword [eax - 0xd0], ecx
mov ecx, dword [edx - 0xcc]
mov dword [eax - 0xcc], ecx
mov ecx, dword [edx - 0xc8]
mov dword [eax - 0xc8], ecx
mov ecx, dword [edx - 0xc4]
mov dword [eax - 0xc4], ecx
mov ecx, dword [edx - 0xc0]
mov dword [eax - 0xc0], ecx
mov ecx, dword [edx - 0xbc]
mov dword [eax - 0xbc], ecx
mov ecx, dword [edx - 0xb8]
mov dword [eax - 0xb8], ecx
mov ecx, dword [edx - 0xb4]
mov dword [eax - 0xb4], ecx
mov ecx, dword [edx - 0xb0]
mov dword [eax - 0xb0], ecx
mov ecx, dword [edx - 0xac]
mov dword [eax - 0xac], ecx
mov ecx, dword [edx - 0xa8]
mov dword [eax - 0xa8], ecx
mov ecx, dword [edx - 0xa4]
mov dword [eax - 0xa4], ecx
mov ecx, dword [edx - 0xa0]
mov dword [eax - 0xa0], ecx
mov ecx, dword [edx - 0x9c]
mov dword [eax - 0x9c], ecx
mov ecx, dword [edx - 0x98]
mov dword [eax - 0x98], ecx
mov ecx, dword [edx - 0x94]
mov dword [eax - 0x94], ecx
mov ecx, dword [edx - 0x90]
mov word [eax - 0x90], cx
mov cl, byte [edx - 0x8e]
mov byte [eax - 0x8e], cl
mov ecx, dword [edx - 0x8c]
mov dword [eax - 0x8c], ecx
mov ecx, dword [edx - 0x88]
mov word [eax - 0x88], cx
mov cl, byte [edx - 0x86]
mov byte [eax - 0x86], cl
mov ecx, dword [edx - 0x84]
mov dword [eax - 0x84], ecx
mov ecx, dword [edx - 0x80]
mov word [eax - 0x80], cx
mov cl, byte [edx - 0x7e]
mov byte [eax - 0x7e], cl
mov ecx, dword [edx - 0x7c]
mov dword [eax - 0x7c], ecx
mov ecx, dword [edx - 0x78]
mov dword [eax - 0x78], ecx
mov ecx, dword [edx - 0x74]
mov dword [eax - 0x74], ecx
mov ecx, dword [edx - 0x70]
mov dword [eax - 0x70], ecx
mov ecx, dword [edx - 0x6c]
mov dword [eax - 0x6c], ecx
mov ecx, dword [edx - 0x68]
mov word [eax - 0x68], cx
mov cx, word [edx - 0x66]
mov word [eax - 0x66], cx
mov ecx, dword [edx - 0x64]
mov word [eax - 0x64], cx
mov cx, word [edx - 0x62]
mov word [eax - 0x62], cx
mov ecx, dword [edx - 0x60]
mov word [eax - 0x60], cx
mov cx, word [edx - 0x5e]
mov word [eax - 0x5e], cx
mov ecx, dword [edx - 0x5c]
mov word [eax - 0x5c], cx
mov cx, word [edx - 0x5a]
mov word [eax - 0x5a], cx
mov ecx, dword [edx - 0x58]
mov word [eax - 0x58], cx
mov cx, word [edx - 0x56]
mov word [eax - 0x56], cx
mov ecx, dword [edx - 0x54]
mov dword [eax - 0x54], ecx
mov ecx, dword [edx - 0x50]
mov word [eax - 0x50], cx
mov cl, byte [edx - 0x4e]
mov byte [eax - 0x4e], cl
mov cl, byte [edx - 0x4d]
mov byte [eax - 0x4d], cl
mov cl, byte [edx - 0x4c]
mov byte [eax - 0x4c], cl
mov cl, byte [edx - 0x4b]
mov byte [eax - 0x4b], cl
mov cl, byte [edx - 0x4a]
mov byte [eax - 0x4a], cl
mov cl, byte [edx - 0x49]
mov byte [eax - 0x49], cl
mov cl, byte [edx - 0x48]
mov byte [eax - 0x48], cl
mov cl, byte [edx - 0x47]
mov byte [eax - 0x47], cl
mov cl, byte [edx - 0x46]
mov byte [eax - 0x46], cl
mov cl, byte [edx - 0x45]
mov byte [eax - 0x45], cl
mov cl, byte [edx - 0x44]
mov byte [eax - 0x44], cl
mov cl, byte [edx - 0x43]
mov byte [eax - 0x43], cl
mov cl, byte [edx - 0x42]
mov byte [eax - 0x42], cl
mov cl, byte [edx - 0x41]
mov byte [eax - 0x41], cl
mov cl, byte [edx - 0x40]
mov byte [eax - 0x40], cl
mov cl, byte [edx - 0x3f]
mov byte [eax - 0x3f], cl
mov cl, byte [edx - 0x3e]
mov byte [eax - 0x3e], cl
mov cl, byte [edx - 0x3d]
mov byte [eax - 0x3d], cl
mov cl, byte [edx - 0x3c]
mov byte [eax - 0x3c], cl
mov cl, byte [edx - 0x3b]
mov byte [eax - 0x3b], cl
mov cl, byte [edx - 0x3a]
mov byte [eax - 0x3a], cl
mov cl, byte [edx - 0x39]
mov byte [eax - 0x39], cl
mov cl, byte [edx - 0x38]
mov byte [eax - 0x38], cl
mov cl, byte [edx - 0x37]
mov byte [eax - 0x37], cl
mov cl, byte [edx - 0x36]
mov byte [eax - 0x36], cl
mov cl, byte [edx - 0x35]
mov byte [eax - 0x35], cl
mov cl, byte [edx - 0x34]
mov byte [eax - 0x34], cl
mov cl, byte [edx - 0x33]
mov byte [eax - 0x33], cl
mov cl, byte [edx - 0x32]
mov byte [eax - 0x32], cl
mov cl, byte [edx - 0x31]
mov byte [eax - 0x31], cl
mov cl, byte [edx - 0x30]
mov byte [eax - 0x30], cl
mov cl, byte [edx - 0x2f]
mov byte [eax - 0x2f], cl
mov cl, byte [edx - 0x2e]
mov byte [eax - 0x2e], cl
mov cl, byte [edx - 0x2d]
mov byte [eax - 0x2d], cl
mov cl, byte [edx - 0x2c]
mov byte [eax - 0x2c], cl
mov cl, byte [edx - 0x2b]
mov byte [eax - 0x2b], cl
mov cl, byte [edx - 0x2a]
mov byte [eax - 0x2a], cl
mov cl, byte [edx - 0x29]
mov byte [eax - 0x29], cl
mov cl, byte [edx - 0x28]
mov byte [eax - 0x28], cl
mov cl, byte [edx - 0x27]
mov byte [eax - 0x27], cl
mov cl, byte [edx - 0x26]
mov byte [eax - 0x26], cl
mov cl, byte [edx - 0x25]
mov byte [eax - 0x25], cl
mov cl, byte [edx - 0x24]
mov byte [eax - 0x24], cl
mov cl, byte [edx - 0x23]
mov byte [eax - 0x23], cl
mov cl, byte [edx - 0x22]
mov byte [eax - 0x22], cl
mov cl, byte [edx - 0x21]
mov byte [eax - 0x21], cl
mov cl, byte [edx - 0x20]
mov byte [eax - 0x20], cl
mov cl, byte [edx - 0x1f]
mov byte [eax - 0x1f], cl
mov cl, byte [edx - 0x1e]
mov byte [eax - 0x1e], cl
mov cl, byte [edx - 0x1d]
mov byte [eax - 0x1d], cl
mov cl, byte [edx - 0x1c]
mov byte [eax - 0x1c], cl
mov cl, byte [edx - 0x1b]
mov byte [eax - 0x1b], cl
mov cl, byte [edx - 0x1a]
mov byte [eax - 0x1a], cl
mov cl, byte [edx - 0x19]
mov byte [eax - 0x19], cl
mov cl, byte [edx - 0x18]
mov byte [eax - 0x18], cl
mov cl, byte [edx - 0x17]
mov byte [eax - 0x17], cl
mov cl, byte [edx - 0x16]
movzx esi, byte [edx - 0x15]
mov byte [eax - 0x16], cl
mov cl, byte [eax - 0x15]
and ecx, 0xffffff80
and esi, 0x7f
or ecx, esi
mov byte [eax - 0x15], cl
mov ecx, dword [edx - 0x14]
mov dword [eax - 0x14], ecx
mov ecx, dword [edx - 0x10]
mov dword [eax - 0x10], ecx
mov ecx, dword [edx - 4]
fld dword [edx - 0xc]
mov word [eax - 4], cx
mov cl, byte [edx - 2]
fstp dword [eax - 0xc]
fld dword [edx - 8]
mov byte [eax - 2], cl
fstp dword [eax - 8]
cmp dword [ebp - 0x118], eax
jne 0x6297e112
mov eax, dword [ebp + 8]
lea edi, [ebx + 0x36a68]
add eax, 0x13cf30
mov ecx, edi
mov dword [esp], eax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___.vector_std::vector_unsigned_char__std::allocator_unsigned_char____const_
push eax
mov eax, dword [ebp + 8]
add eax, 0x13cf3c
lea ecx, [ebx + 0x36a74]
mov dword [esp], eax
call method.std::_Optional_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults__false__false_._Optional_base_std::_Optional_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults__false__false__const_
lea ecx, [ebp - 0xc0]
push esi
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 0x6297e5ae
mov eax, dword [ebp - 0x144]
lea ecx, [ebp - 0x80]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov ebx, dword [ebp - 0xbc]
call method.OpenMPT::RowVisitor.RowVisitor_OpenMPT::CSoundFile_const__unsigned_char_
push ecx
push ecx
mov eax, dword [ebp - 0x110]
mov edi, dword [ebp - 0x110]
movzx edx, word [ebp - 0x108]
mov eax, dword [eax + 4]
sub eax, dword [edi]
sar eax, 1
cmp edx, eax
jae 0x6297e617
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 0x6297e617
mov word [ebp - 0x108], dx
mov dword [ebp - 0x10c], 0
jmp 0x6297e5ce
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0xe8], 0
mov dword [ebx + 0x30], eax
mov dword [ebx + 0x34], eax
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0x108]
cmp dword [ebp - 0x138], 7
mov word [ebx + 0x48], ax
mov word [ebx + 0x4a], ax
mov word [ebp - 0xc8], ax
mov dword [ebp - 0xe4], 0
jne 0x6297e74f
cmp dword [ebp - 0x120], 2
mov dword [ebp - 0xe8], 2
jne 0x6297e74f
mov eax, dword [ebp - 0x110]
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 0x6297e74f
movzx esi, word [edx + ecx*2]
mov eax, dword [ebp + 8]
mov dword [esp], esi
add eax, 0x763f8
mov ecx, eax
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
test al, al
push edi
je 0x6297e74f
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0xf8]
shl esi, 6
add esi, dword [eax + 0x763f8]
cmp edi, dword [esi + 0xc]
jae 0x6297e74f
mov ecx, esi
call method.OpenMPT::CPattern.GetNumChannels___const
movzx edx, ax
imul edx, edi
imul edx, edx, 6
mov eax, dword [ebp + 8]
mov edi, dword [esi]
add edi, edx
xor esi, esi
mov ax, word [eax + 0x753bc]
mov word [ebp - 0x108], ax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0x10c], eax
cmp word [ebp - 0x108], si
jbe 0x6297e74f
cmp byte [edi], 0xfd
ja 0x6297e73c
jne 0x6297e720
mov eax, dword [ebp + 8]
cmp word [eax + 0x753c0], 0
jne 0x6297e73c
mov ecx, edi
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x6297e749
cmp byte [edi + 1], 0
je 0x6297e749
mov ecx, edi
call method.OpenMPT::ModCommand.IsPortamento___const
test al, al
jne 0x6297e749
mov eax, dword [ebp - 0x10c]
mov dword [eax + esi*8], 0xffffffff
add edi, 6
inc esi
jmp 0x6297e703
mov eax, dword [ebp + 0xc]
and eax, 1
mov dword [ebp - 0x130], eax
je 0x6297e768
lea ecx, [ebx + 0x36a74]
call sym.__ZNSt8optionalIN7OpenMPT10CSoundFile9PlayState26MIDIMacroEvaluationResultsEE7emplaceIJEEENSt9enable_ifIX18is_constructible_vI
mov byte [ebp - 0x148], 0
mov dword [ebp - 0x124], 0
mov dword [ebp - 0x14c], 0x8000
movzx eax, byte [ebp - 0x148]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.NextRow_OpenMPT::CSoundFile::PlayState__bool__const
push esi
mov byte [ebp - 0x10c], al
cmp dword [ebp - 0x120], 3
push esi
jne 0x6297e7d4
fld qword [ebp - 0xa8]
fcomp qword [ebp - 0xf8]
fnstsw ax
sahf
jb 0x6297e7d4
cmp dword [ebp - 0x138], 7
mov byte [ebp - 0xc6], 1
jne 0x6297ffa0
jmp 0x6297ff54
mov eax, dword [ebp - 0x110]
or esi, 0xffffffff
movzx ecx, word [ebx + 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 0x6297e7fa
mov si, word [edx + ecx*2]
mov eax, dword [ebp + 8]
mov word [ebx + 0x46], si
add eax, 0x763f8
mov dword [ebp - 0x108], eax
movzx eax, si
mov ecx, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
inc si
setne dl
xor eax, 1
push ecx
test dl, al
je 0x6297e840
cmp dword [ebp - 0x120], 2
jne 0x6297e840
cmp di, word [ebp - 0xf4]
je 0x6297e7bb
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov dx, word [ebx + 0x46]
mov eax, dword [eax + 0x763fc]
sub eax, dword [edi + 0x763f8]
sar eax, 6
cmp dx, ax
jb 0x6297e9d0
inc dx
mov eax, dword [ebx + 0x48]
je 0x6297e884
mov edi, dword [ebp - 0x110]
movzx ecx, ax
mov edx, dword [edi + 4]
sub edx, dword [edi]
sar edx, 1
cmp ecx, edx
jae 0x6297e884
inc eax
mov word [ebx + 0x48], ax
jmp 0x6297e89b
mov edi, dword [ebp - 0x110]
mov dx, word [edi + 0x28]
cmp dx, ax
je 0x6297e9d0
mov word [ebx + 0x48], dx
mov eax, dword [ebp - 0x110]
movzx edi, word [ebx + 0x48]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, eax
mov dword [ebp - 0x118], eax
sub edx, ecx
mov esi, edi
sar edx, 1
mov eax, 0xffff
cmp edi, edx
jae 0x6297e8c5
movzx eax, word [ecx + edi*2]
mov word [ebx + 0x46], ax
mov word [ebx + 0x4a], si
mov ecx, dword [ebp - 0x108]
mov dword [esp], eax
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
test al, al
push edx
jne 0x6297e840
lea eax, [ebx + 0x268]
mov dword [esp + 4], 0
mov dword [ebp - 0x50], eax
mov dword [esp], esi
movzx eax, byte [ebp - 0x10c]
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 0x6297e840
cmp dword [ebp - 0x120], 1
jbe 0x6297e953
lea eax, [ebx + 0x30]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
lea eax, [ebx + 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 0x6297e9d0
jmp 0x6297e972
mov eax, dword [ebx + 0x48]
mov dword [ebp - 0xd8], 0
cmp dword [ebp - 0x120], 0
mov word [ebp - 0xcc], ax
je 0x6297e9d0
jmp 0x6297e92d
fld qword [ebp - 0xa8]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x12c]
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 [ebx + 0x30]
mov dword [ebp - 0xd0], eax
mov ax, word [ebx + 0x4a]
mov word [ebp - 0xc8], ax
call method.OpenMPT::GetLengthMemory.Reset__
mov edi, dword [ebp - 0x110]
movzx eax, word [ebx + 0x4a]
mov edx, dword [edi]
mov word [ebx + 0x48], ax
mov ax, word [edx + eax*2]
mov word [ebx + 0x46], ax
mov eax, dword [ebx + 0x30]
mov dword [ebx + 0x34], eax
cmp word [ebx + 0x4a], 0xffff
je 0x6297ff4b
movzx esi, word [ebx + 0x46]
mov ecx, dword [ebp - 0x108]
mov dword [esp], esi
call method.OpenMPT::CPatternContainer.IsValidPat_unsigned_short__const
mov byte [ebp - 0x139], al
push edi
movzx eax, word [ebx + 0x48]
cmp byte [ebp - 0x139], 0
jne 0x6297ea59
mov edi, dword [ebp - 0x110]
cmp word [edi + 0x28], ax
jne 0x6297ea53
cmp dword [ebp - 0x120], 0
je 0x6297ff4b
lea eax, [ebx + 0x30]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
lea eax, [ebx + 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 0x6297ff4b
fld qword [ebp - 0xa8]
fstp qword [ebp - 0xe0]
jmp 0x6297ebc3
inc eax
jmp 0x6297f3cf
shl esi, 6
mov edi, dword [ebp + 8]
add esi, dword [edi + 0x763f8]
mov edi, dword [esi + 0xc]
cmp dword [ebx + 0x30], edi
jb 0x6297ea74
mov dword [ebx + 0x30], 0
cmp dword [ebp - 0x120], 2
mov edx, dword [ebx + 0x30]
jne 0x6297ea96
cmp word [ebp - 0xf4], ax
jne 0x6297eaa1
cmp dword [ebp - 0xf8], edx
jne 0x6297eaa1
jmp 0x6297e7bb
xor esi, esi
cmp dword [ebp - 0x120], 3
je 0x6297ead6
mov edi, dword [ebp - 0x14c]
xor esi, esi
cmp edi, dword [ebp - 0x58]
ja 0x6297ead6
fld dword [0x62b20610]
cmp edi, 0x100
fstp qword [ebp - 0xa8]
jbe 0x6297eac8
shr dword [ebp - 0x14c], 1
movzx esi, byte [ebp - 0x139]
mov dword [ebp - 0x58], 0
lea ecx, [ebx + 0x268]
mov dword [esp + 4], edx
mov dword [ebp - 0x50], ecx
mov dword [esp], eax
movzx ecx, byte [ebp - 0x10c]
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 0x6297eb19
cmp dword [ebp - 0x120], 1
ja 0x6297eb8f
jmp 0x6297eb6f
mov eax, esi
test al, al
jne 0x6297eb0e
mov eax, dword [ebx + 0x48]
mov ecx, dword [ebp + 8]
mov word [ebp - 0xca], ax
mov eax, dword [ebx + 0x30]
mov dword [esp + 4], 0
mov dword [esp], ebx
mov dword [ebp - 0xd4], eax
call method.OpenMPT::CSoundFile.SetupNextRow_OpenMPT::CSoundFile::PlayState__bool__const
push esi
mov eax, dword [ebp + 8]
push esi
movzx esi, word [ebx + 0x46]
shl esi, 6
add esi, dword [eax + 0x763f8]
mov eax, dword [esi + 0xc]
cmp dword [ebx + 0x30], eax
jb 0x6297ec02
mov dword [ebx + 0x30], 0
jmp 0x6297ec02
mov eax, dword [ebx + 0x48]
mov word [ebp - 0xcc], ax
mov eax, dword [ebx + 0x30]
cmp dword [ebp - 0x120], 0
mov dword [ebp - 0xd8], eax
je 0x6297ff4b
lea eax, [ebx + 0x30]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
lea eax, [ebx + 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 0x6297ff4b
fld qword [ebp - 0xa8]
fstp qword [ebp - 0xe0]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x12c]
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 [ebx + 0x30]
mov dword [ebp - 0xd0], eax
mov ax, word [ebx + 0x4a]
mov word [ebp - 0xc8], ax
call method.OpenMPT::GetLengthMemory.Reset__
mov eax, dword [ebx + 0x30]
mov dword [ebx + 0x34], eax
jmp 0x6297e783
cmp byte [ebp - 0x10c], 0
jne 0x6297e783
mov ecx, esi
mov edi, dword [ebx + 0x30]
call method.OpenMPT::CPattern.GetNumChannels___const
lea ecx, [ebp - 0x50]
movzx eax, ax
imul eax, edi
imul eax, eax, 6
add eax, dword [esi]
mov dword [ebp - 0x4c], 0xd
mov esi, 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 0x6297ee4c
mov ecx, esi
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne 0x6297ed0f
cmp byte [ebp - 0x118], 0
je 0x6297ec96
mov eax, edi
mov edx, dword [ebp + 8]
shl eax, 5
test byte [edx + eax + 0x75419], 4
jne 0x6297ed0f
mov al, byte [esi]
add eax, 5
cmp al, 1
ja 0x6297ed33
cmp byte [ebx + 0x36aa4], 0
je 0x6297ed0f
mov al, byte [esi + 1]
lea edx, [eax - 1]
cmp dl, 0xf9
ja 0x6297ed0f
movzx eax, byte [esi + 3]
movzx ecx, byte [esi + 5]
shl eax, 8
add eax, ecx
movzx eax, ax
mov dword [ebp - 0x10c], eax
fld dword [0x62b20604]
fidivr dword [ebp - 0x10c]
movzx eax, byte [esi + 2]
movzx ecx, byte [esi + 4]
shl eax, 8
mov byte [ebp - 0x50], dl
add eax, ecx
lea ecx, [ebx + 0x36a8c]
movzx eax, ax
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x50]
mov dword [esp], eax
fstp dword [ebp - 0x10c]
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 - 0x10c]
push edx
fstp dword [eax]
movzx eax, word [ebp - 0x108]
imul eax, eax, 0x368
mov ecx, 6
lea edx, [ebx + eax + 0x57c]
xor eax, eax
mov edi, edx
rep stosb byte es:[edi], al
jmp 0x6297ee3d
imul edx, edi, 0x368
add edx, ebx
mov eax, dword [esi]
mov dword [edx + 0x57c], eax
mov ax, word [esi + 4]
mov word [edx + 0x580], ax
mov al, byte [esi + 3]
cmp al, 0x13
je 0x6297ee29
ja 0x6297ed68
cmp al, 0x10
je 0x6297ed71
cmp al, 0x11
je 0x6297ed77
jmp 0x6297ee3d
cmp al, 0x14
je 0x6297edbb
jmp 0x6297ee3d
movzx eax, byte [esi + 5]
jmp 0x6297eda5
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 0x6297ee3d
movzx eax, byte [esi + 5]
test al, al
je 0x6297ee3d
mov dword [esp + 4], eax
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.SetSpeed_OpenMPT::CSoundFile::PlayState__unsigned_int__const
push edi
push edi
jmp 0x6297ee3d
mov al, byte [edx + 0x581]
test al, al
jne 0x6297edd4
mov ecx, dword [ebp + 8]
test dword [ecx + 0x753b4], 0x1000022
jne 0x6297ede3
imul edi, edi, 0x368
mov byte [ebx + edi + 0x5a9], al
jmp 0x6297edef
mov al, byte [edx + 0x5a9]
mov byte [edx + 0x581], al
mov dl, byte [esi + 5]
mov al, dl
and eax, 0xfffffff0
cmp al, 0x60
jne 0x6297ee03
and edx, 0xf
add dword [ebx + 0x18], edx
jmp 0x6297ee3d
cmp al, 0xe0
jne 0x6297ee3d
cmp dword [ebx + 0x14], 0
jne 0x6297ee3d
mov eax, dword [ebp + 8]
and edx, 0xf
test byte [eax + 0x753b4], 2
je 0x6297ee20
test dl, dl
je 0x6297ee3d
movzx edx, dl
inc edx
mov dword [ebx + 0x14], edx
jmp 0x6297ee3d
mov al, byte [esi + 5]
mov dl, al
and edx, 0xfffffff0
cmp dl, 0xe0
jne 0x6297ee3d
and eax, 0xf
inc eax
mov dword [ebx + 0x14], eax
inc word [ebp - 0x108]
add esi, 6
jmp 0x6297ec55
mov ecx, ebx
call method.OpenMPT::CSoundFile::PlayState.TicksOnRow___const
mov dword [ebp - 0x11c], eax
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x6297ee65
mov eax, 1
mov edi, dword [ebp - 0x11c]
mov dword [ebx + 0x40], 0xffffffff
sub edi, eax
mov dword [ebx + 0x3c], 0xffffffff
mov dword [ebp - 0x128], edi
mov word [ebx + 0x44], 0xffff
mov word [ebp - 0x134], 0
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x134]
cmp si, word [eax + 0x753bc]
jae 0x6297f386
movzx edi, si
imul edx, edi, 0x368
mov dword [ebp - 0x108], edx
lea esi, [ebx + edx + 0x57c]
mov ecx, esi
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne case.0x629803b7.1
mov edx, dword [ebp - 0x108]
cmp dword [ebp - 0x130], 0
lea eax, [ebx + edx + 0x268]
mov dword [ebp - 0x118], eax
lea eax, [ebx + edx]
mov dl, byte [eax + 0x57f]
mov byte [ebp - 0x10c], dl
mov dl, byte [eax + 0x581]
mov byte [ebp - 0x108], dl
je 0x629803a3
mov dl, byte [eax + 0x57c]
mov byte [ebp - 0x150], dl
mov dl, byte [eax + 0x57d]
test dl, dl
je 0x6297ef34
mov byte [eax + 0x58b], dl
mov byte [eax + 0x587], 0
mov eax, dword [ebp - 0xb8]
mov byte [eax + edi*8 + 5], 0xff
mov ecx, esi
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x6297ef58
imul eax, edi, 0x368
cmp byte [ebx + eax + 0x57d], 0
jne 0x6297f004
jmp 0x6297f0aa
imul eax, edi, 0x368
mov dl, byte [ebp - 0x150]
mov ecx, dword [ebp - 0x118]
mov byte [ebx + eax + 0x587], dl
call method.OpenMPT::ModChannel.RestorePanAndFilter__
cmp dword [ebp - 0x138], 7
jne 0x6297ef92
movzx eax, word [ebp - 0x134]
mov edx, dword [ebp - 0xb8]
cmp dword [edx + eax*8], 0xffffffff
jne 0x6297eff5
imul eax, edi, 0x368
add eax, ebx
mov edx, dword [eax + 0x4f8]
movzx eax, byte [eax + 0x58b]
test al, al
je 0x6297efc3
mov ecx, dword [ebp + 8]
movzx ecx, word [ecx + 0x753c0]
cmp eax, ecx
jg 0x6297efc3
mov edx, dword [ebp + 8]
mov edx, dword [edx + eax*4 + 0xdbd1c]
test edx, edx
je 0x6297eff5
mov al, byte [edx + 0x15]
test al, al
jns 0x6297efde
imul ecx, edi, 0x368
and eax, 0x7f
mov byte [ebx + ecx + 0x5ad], al
mov al, byte [edx + 0x16]
test al, al
jns 0x6297eff5
imul edx, edi, 0x368
and eax, 0x7f
mov byte [ebx + edx + 0x5ae], al
mov ecx, esi
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x6297ef3f
imul eax, edi, 0x368
movzx eax, byte [ebx + eax + 0x58b]
test al, al
je 0x6297f04f
mov edx, dword [ebp + 8]
movzx edx, word [edx + 0x753c0]
cmp eax, edx
jg 0x6297f04f
mov edx, dword [ebp + 8]
mov eax, dword [edx + eax*4 + 0xdbd1c]
test eax, eax
je 0x6297f04f
test byte [eax + 0xf], 1
je 0x6297f04f
mov dword [esp + 4], edx
mov ecx, dword [ebp - 0x118]
mov eax, dword [eax + 8]
mov dword [esp], eax
call method.OpenMPT::ModChannel.SetInstrumentPan_int__OpenMPT::CSoundFile_const_
push ecx
push ecx
imul eax, edi, 0x368
mov ecx, dword [ebp + 8]
movzx eax, byte [ebx + eax + 0x58b]
mov dword [esp + 4], eax
movzx eax, byte [ebp - 0x150]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.GetSampleIndex_unsigned_char__unsigned_int__const
test ax, ax
push edx
push edx
je 0x6297f0aa
movzx eax, ax
imul eax, eax, 0x68
add eax, dword [ebp + 8]
test byte [eax + 0x7643e], 0x20
je 0x6297f0aa
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x118]
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, edi, 0x368
lea edx, [ebx + eax]
mov al, byte [edx + 0x57e]
cmp al, 4
ja 0x6297f0de
cmp al, 2
ja 0x6297f0e4
dec al
jne 0x6297f137
movzx eax, word [ebp - 0x134]
mov ecx, dword [ebp - 0xb8]
mov dl, byte [edx + 0x580]
mov byte [ecx + eax*8 + 5], dl
jmp 0x6297f137
cmp al, 0xb
je 0x6297f0f6
jmp 0x6297f137
mov al, byte [edx + 0x580]
test al, al
je 0x6297f137
mov byte [edx + 0x5aa], al
jmp 0x6297f137
cmp byte [edx + 0x580], 0
je 0x6297f137
mov dword [esp + 4], 0
mov dword [esp], esi
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x150], edx
call method.OpenMPT::CSoundFile.GetVolCmdTonePorta_OpenMPT::ModCommand_const__unsigned_int__const
test eax, 0xff0000
push edx
push edx
mov edx, dword [ebp - 0x150]
mov word [edx + 0x568], ax
je 0x6297f137
mov byte [ebp - 0x10c], 0
jmp case.0x629807e7.10
mov al, byte [ebp - 0x10c]
sub eax, 0xc
cmp al, 0x10
jbe 0x62980d23
mov al, byte [ebp - 0x10c]
sub eax, 2
cmp al, 0x2c
jbe 0x629807e4
imul esi, edi, 0x368
add esi, ebx
mov al, byte [esi + 0x57e]
cmp al, 7
je 0x6297f19c
cmp al, 8
je 0x6297f1d3
cmp al, 2
jne 0x6297f1f1
mov dword [esp + 8], 6
mov ecx, dword [ebp + 8]
movzx eax, byte [esi + 0x580]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.Panning_OpenMPT::ModChannel__unsigned_int__OpenMPT::CSoundFile::PanningType__const
sub esp, 0xc
jmp 0x6297f1f1
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x50]
add eax, 0x10648c
mov dword [ebp - 0x4c], 0x15
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
mov dl, al
test dl, dl
movzx eax, byte [esi + 0x580]
je 0x6297f1ce
and eax, 0xf
mov byte [esi + 0x59f], al
jmp 0x6297f1f1
shl eax, 4
jmp 0x6297f1da
movzx eax, byte [esi + 0x580]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
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, edi, 0x368
add edx, ebx
mov al, byte [edx + 0x57f]
cmp al, 8
je 0x6297f297
ja 0x6297f216
and eax, 0xfffffffd
cmp al, 5
jne 0x6297f32e
jmp 0x6297f227
cmp al, 0x1a
je 0x6297f227
cmp al, 0x1b
je 0x6297f304
jmp 0x6297f32e
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x128]
test dword [esi + 0x753b4], 0x1000020
je 0x6297f251
test byte [esi + 0x753d0], 4
mov eax, dword [ebp - 0x11c]
je 0x6297f251
mov eax, dword [ebp - 0x128]
imul edx, edi, 0x368
lea ecx, [ebp - 0x50]
movzx esi, byte [ebx + edx + 0x59f]
imul esi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x4c], 0x15
add eax, 0x106488
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
je 0x6297f283
shl esi, 2
imul eax, edi, 0x368
mov edx, esi
add byte [ebx + eax + 0x59b], dl
jmp 0x6297f32e
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x128]
test dword [esi + 0x753b4], 0x1000020
je 0x6297f2c1
test byte [esi + 0x753d0], 4
mov eax, dword [ebp - 0x11c]
je 0x6297f2c1
mov eax, dword [ebp - 0x128]
imul edx, edi, 0x368
lea ecx, [ebp - 0x50]
movzx esi, byte [ebx + edx + 0x5a2]
imul esi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x4c], 0x15
add eax, 0x106488
mov dword [ebp - 0x50], eax
call method.std::bitset_122u_::reference.operator_bool___const
test al, al
je 0x6297f2f3
shl esi, 2
imul eax, edi, 0x368
mov edx, esi
add byte [ebx + eax + 0x59c], dl
jmp 0x6297f32e
mov eax, dword [ebp - 0x11c]
lea ecx, [eax - 1]
mov al, byte [edx + 0x5a5]
imul eax, ecx
add byte [edx + 0x59d], al
mov eax, dword [ebp - 0x118]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.ProcessPanbrello_OpenMPT::ModChannel__const
push esi
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.0x629803b7.1
cmp byte [ebp - 0x10c], 0
je case.0x629803b7.1
cmp byte [ebp - 0x108], 0
je case.0x629803b7.1
movzx eax, byte [ebp - 0x108]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
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 - 0x134]
jmp 0x6297ee90
mov eax, dword [ebp + 8]
cmp dword [eax + 0x753b4], 4
jne 0x6297f39b
cmp dword [ebx + 0x28], 0xffff
je 0x6297f3c6
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov eax, dword [eax + 0x753d8]
mov dword [ebx + 0x20], eax
movzx eax, word [ebx + 0x46]
shl eax, 6
add eax, dword [edi + 0x763f8]
mov edx, dword [eax + 0x10]
mov edi, edx
add edi, dword [eax + 0x14]
je 0x6297f3d8
mov dword [ebx + 0x20], edx
jmp 0x6297f3d8
mov eax, dword [ebx + 0x30]
mov dword [ebx + 0x34], eax
mov eax, dword [ebx + 0x48]
mov word [ebx + 0x4a], ax
jmp 0x6297e783
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.GetTickDuration_OpenMPT::CSoundFile::PlayState__const
mov ecx, dword [ebp - 0x11c]
mov dword [ebp - 0x134], 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 [ebx], ecx
cmp dword [ebp - 0x138], 7
jne 0x6297ff14
mov word [ebp - 0x150], 0
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x150]
cmp di, word [eax + 0x753bc]
jae 0x6297ff14
movzx esi, di
lea eax, [esi*8]
mov dword [ebp - 0x15c], eax
add eax, dword [ebp - 0xb8]
mov dword [ebp - 0x148], eax
cmp dword [eax], 0xffffffff
je 0x6297ff08
imul eax, esi, 0x368
lea edi, [ebx + eax + 0x268]
mov dword [ebp - 0x108], edi
lea edi, [ebx + eax + 0x57c]
cmp dword [ebx + eax + 0x524], 0
mov dword [ebp - 0x118], edi
jne 0x6297f4c0
mov ecx, edi
call method.OpenMPT::ModCommand.IsEmpty___const
test al, al
jne 0x6297ff08
imul edi, esi, 0x368
add edi, ebx
mov ecx, dword [ebp - 0x118]
mov al, byte [edi + 0x581]
mov byte [ebp - 0x10c], al
and eax, 0xf
mov byte [ebp - 0x13b], al
mov eax, dword [ebp - 0x10c]
and eax, 0xf
mov dword [ebp - 0x128], eax
call method.OpenMPT::ModCommand.IsPortamento___const
cmp byte [edi + 0x57d], 0
mov byte [ebp - 0x140], al
je 0x6297f510
mov dword [edi + 0x4fc], 0
mov ecx, dword [ebp - 0x118]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
je 0x6297f747
cmp byte [ebp - 0x140], 0
je 0x6297f586
mov eax, dword [ebp - 0x148]
cmp byte [eax + 4], 0
je 0x6297f586
imul eax, esi, 0x368
mov dword [esp + 0xc], 0
lea ecx, [ebp - 0x50]
mov eax, dword [ebx + 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, esi, 0x368
mov edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x4c]
sub esp, 0x10
mov dword [ebx + eax + 0x270], edx
mov dword [ebx + eax + 0x274], ecx
imul eax, esi, 0x368
add eax, ebx
mov dl, byte [eax + 0x587]
mov edi, dword [eax + 0x51c]
mov byte [eax + 0x58a], dl
mov dword [ebp - 0x158], edi
movzx eax, byte [eax + 0x58b]
movzx edi, byte [ebp - 0x140]
test al, al
je 0x6297f5e4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 1
mov dword [esp + 8], edi
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, esi, 0x368
mov dword [esp + 0x14], 0xffff
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 1
mov dword [esp + 8], edi
movzx eax, byte [ebx + 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 - 0x10c]
mov dword [esp + 4], esi
mov dword [esp], ebx
sar eax, 4
lea edi, [esi*8]
mov dword [ebp - 0x148], eax
call method.OpenMPT::CSoundFile.HandleDigiSamplePlayDirection_OpenMPT::CSoundFile::PlayState__unsigned_short__const
add edi, dword [ebp - 0xb8]
push eax
push eax
mov byte [edi + 4], 1
imul eax, esi, 0x368
add eax, ebx
mov dl, byte [eax + 0x57f]
lea ecx, [edx - 0x13]
mov byte [ebp - 0x154], cl
cmp cl, 1
ja 0x6297f6a9
mov al, byte [eax + 0x581]
and eax, 0xfffffff0
cmp al, 0xd0
jne 0x6297f6c2
mov eax, dword [ebp - 0x128]
cmp dword [ebp - 0x11c], eax
mov dword [ebp - 0x10c], eax
jbe 0x6297f6c2
jmp 0x6297f6cc
mov eax, dword [ebp - 0x148]
cmp dword [ebp - 0x11c], eax
mov dword [ebp - 0x10c], eax
jbe 0x6297f6c2
cmp dl, 0x21
je 0x6297f6cc
mov dword [ebp - 0x10c], 0
mov eax, dword [ebx + 0x14]
cmp eax, 1
jbe 0x6297f6fc
cmp dword [ebp - 0x10c], 0
je 0x6297f6fc
mov ecx, dword [ebp + 8]
test dword [ecx + 0x753b4], 0x1000022
je 0x6297f6fc
mov ecx, dword [ebx + 0x28]
dec eax
add ecx, dword [ebx + 0x18]
imul eax, ecx
add dword [ebp - 0x10c], eax
cmp byte [ebp - 0x140], 0
jne 0x6297f70b
mov dword [edi], 0
cmp dl, 9
je 0x6297f732
cmp dword [ebp - 0x148], 8
jne 0x6297f722
cmp byte [ebp - 0x154], 1
jbe 0x6297f732
imul eax, esi, 0x368
cmp byte [ebx + eax + 0x57e], 2
jne 0x6297f751
imul eax, esi, 0x368
mov edi, dword [ebp - 0x158]
mov dword [ebx + eax + 0x51c], edi
jmp 0x6297f751
mov dword [ebp - 0x10c], 0
mov ecx, dword [ebp - 0x118]
call method.OpenMPT::ModCommand.IsNote___const
test al, al
jne 0x6297f782
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 0x6297f8ae
imul edx, esi, 0x368
add edx, ebx
mov al, byte [edx + 0x57f]
cmp al, 0xa
jne 0x6297f7d1
cmp byte [ebp - 0x140], 0
je 0x6297f7b0
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x80004
jne 0x6297f8ae
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
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 0x6297f8ae
cmp al, 0x2c
jne 0x6297f7fa
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 0x6297f897
cmp al, 0x2a
jne 0x6297f85b
cmp dword [edx + 0x2d0], 0
je 0x6297f85b
mov eax, dword [ebp - 0x124]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], esi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
imul eax, esi, 0x368
sub esp, 0xc
mov ecx, dword [ebp + 8]
movzx eax, byte [ebx + 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 [ebx + 0x28]
dec eax
mov dword [ebp - 0x10c], eax
jmp 0x6297f8ae
imul edx, esi, 0x368
add edx, ebx
cmp byte [edx + 0x57e], 0xf
jne 0x6297f8ae
mov ecx, dword [edx + 0x2d0]
test ecx, ecx
je 0x6297f8ae
movzx eax, byte [edx + 0x580]
cmp al, 9
ja 0x6297f8ae
test al, al
jne 0x6297f88d
mov eax, dword [edx + 0x500]
jmp 0x6297f897
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 edx, esi, 0x368
mov al, byte [ebp - 0x139]
cmp byte [ebx + edx + 0x57c], 0xfd
ja 0x6297f939
jne 0x6297f8d3
mov edi, dword [ebp + 8]
cmp word [edi + 0x753c0], 0
jne 0x6297f939
imul eax, esi, 0x368
add eax, ebx
mov cl, byte [eax + 0x57f]
lea edx, [ecx - 0x13]
cmp dl, 1
ja 0x6297f90c
mov al, byte [eax + 0x581]
mov edx, dword [ebp - 0x128]
and eax, 0xfffffff0
cmp al, 0xc0
sete al
cmp dword [ebp - 0x11c], edx
seta dl
and al, dl
je 0x6297f933
jmp 0x6297f939
cmp cl, 0x21
jne 0x6297f933
xor eax, eax
cmp byte [ebp - 0x13b], 0
je 0x6297f939
mov eax, dword [ebp - 0x128]
add eax, dword [ebp - 0x10c]
cmp eax, dword [ebp - 0x11c]
setb al
jmp 0x6297f939
cmp cl, 0x19
sete al
imul edx, esi, 0x368
add edx, ebx
mov cl, byte [edx + 0x57f]
cmp cl, 0xd
jne 0x6297f955
movzx ecx, byte [edx + 0x581]
jmp 0x6297f973
cmp cl, 0x2e
jne 0x6297f963
movzx ecx, byte [edx + 0x581]
jmp 0x6297f976
cmp byte [edx + 0x57e], 1
jne 0x6297f97c
movzx ecx, byte [edx + 0x580]
shl ecx, 2
mov dword [edx + 0x518], ecx
imul edx, esi, 0x368
add edx, ebx
cmp dword [edx + 0x2d0], 0
je 0x6297f9c9
test al, al
jne 0x6297f9cd
mov cl, byte [edx + 0x57f]
cmp cl, 0x2e
ja 0x6297f9ea
movzx eax, cl
shr eax, 5
mov edi, 1
shl edi, cl
test dword [ebp + eax*4 - 0xe8], edi
jne 0x6297f9cd
cmp cl, 0x13
jne 0x6297f9ea
mov al, byte [edx + 0x581]
and eax, 0xfffffff0
sub eax, 0x10
test al, 0xe0
jne 0x6297f9ea
jmp 0x6297f9cd
test al, al
je 0x6297f9ea
mov ecx, dword [ebp - 0x108]
call method.OpenMPT::ModChannel.Stop__
mov eax, dword [ebp - 0xb8]
mov dword [eax + esi*8], 0
jmp 0x6297ff08
mov edi, dword [ebp - 0x134]
cmp dword [ebp - 0x124], edi
je 0x6297fa24
cmp dword [ebp - 0x124], 0
je 0x6297fa24
mov eax, dword [ebp - 0x124]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], esi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
sub esp, 0xc
imul edx, esi, 0x368
add edx, ebx
mov al, byte [edx + 0x57f]
cmp al, 0x14
je 0x6297fba3
ja 0x6297fa5b
cmp al, 0xb
je 0x6297fa95
ja 0x6297fa4e
sub eax, 6
cmp al, 1
jbe 0x6297fa95
jmp 0x6297fcfa
cmp al, 0x13
je 0x6297fb17
jmp 0x6297fcfa
cmp al, 0x24
ja 0x6297fa6c
cmp al, 0x22
jbe 0x6297fcfa
jmp 0x6297fcac
cmp al, 0x2d
jne 0x6297fcfa
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 0x6297fca8
imul eax, esi, 0x368
cmp byte [ebx + eax + 0x581], 0
jne 0x6297fab5
mov eax, dword [ebp + 8]
cmp dword [eax + 0x753b4], 1
je 0x6297fcfa
imul eax, esi, 0x368
xor edi, edi
mov dword [ebp - 0x140], eax
cmp edi, dword [ebp - 0x11c]
je 0x6297fcfa
mov eax, dword [ebp - 0x140]
test edi, edi
sete byte [ebp - 0x128]
mov ecx, dword [ebp + 8]
lea edx, [ebx + eax]
inc edi
mov al, byte [edx + 0x5bb]
and eax, 0xfffffffe
or eax, dword [ebp - 0x128]
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 0x6297fac3
test byte [edx + 0x581], 0xf
jne 0x6297fb33
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x100004
je 0x6297fcfa
imul eax, esi, 0x368
add eax, ebx
mov dl, byte [eax + 0x581]
or byte [eax + 0x5bb], 1
mov al, dl
and eax, 0xfffffff0
cmp al, 0xa0
je 0x6297fb7b
cmp al, 0xb0
jne 0x6297fcfa
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 0x6297fb9b
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 0x6297fcfa
movzx eax, byte [edx + 0x581]
cmp al, 0x9e
jne 0x6297fbe7
mov eax, dword [ebp - 0x124]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], esi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
imul eax, esi, 0x368
sub esp, 0xc
and dword [ebx + eax + 0x2c0], 0xffffff7f
jmp 0x6297fcfa
cmp al, 0x9f
jne 0x6297fc85
mov eax, dword [ebp - 0x124]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], esi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
imul eax, esi, 0x368
add eax, ebx
sub esp, 0xc
mov edi, dword [eax + 0x2c0]
mov edx, edi
or dl, 0x80
mov dword [eax + 0x2c0], edx
cmp dword [eax + 0x26c], 0
jne 0x6297fcfa
mov edx, dword [eax + 0x2b4]
test edx, edx
mov dword [ebp - 0x128], edx
je 0x6297fcfa
mov ecx, dword [ebp - 0x118]
call method.OpenMPT::ModCommand.IsNote___const
mov edx, dword [ebp - 0x128]
test al, al
jne 0x6297fc6a
and edi, 2
jne 0x6297fcfa
imul eax, esi, 0x368
add eax, ebx
dec edx
mov dword [eax + 0x268], 0xffffffff
mov dword [eax + 0x26c], edx
jmp 0x6297fcfa
mov dl, al
and edx, 0xfffffff0
cmp dl, 0x70
jne 0x6297fcfa
cmp al, 0x72
jbe 0x6297fcfa
mov edi, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 4], edi
mov ecx, dword [ebp - 0x108]
call method.OpenMPT::ModChannel.InstrumentControl_unsigned_char__OpenMPT::CSoundFile_const_
push edi
push edi
jmp 0x6297fcfa
mov eax, dword [ebp - 0x124]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], eax
mov dword [esp], esi
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], esi
mov eax, dword [ebx + 0x30]
mov dword [esp + 4], eax
movzx eax, word [ebx + 0x46]
mov dword [esp], eax
call method.OpenMPT::CSoundFile.CalculateFinetuneTarget_unsigned_short__unsigned_int__unsigned_short__const
imul edx, esi, 0x368
sub esp, 0xc
mov word [ebx + edx + 0x56e], ax
imul edi, esi, 0x368
add edi, ebx
mov al, byte [edi + 0x5bb]
lea ecx, [edi + 0x5b0]
or eax, 1
mov byte [ecx + 0xb], al
mov dl, byte [edi + 0x57e]
cmp dl, 6
je 0x6297fd81
ja 0x6297fd34
cmp dl, 5
je 0x6297fd42
cmp dl, 2
jbe 0x6297fe8c
jmp 0x6297fdc6
cmp dl, 0xe
je 0x6297fe70
jmp 0x6297fe8c
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 [edi + 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 0x6297fdbe
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 [edi + 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 0x6297fe8c
mov al, byte [edi + 0x580]
mov byte [ebp - 0x128], al
test al, al
jne 0x6297fe10
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 0x6297fe10
mov al, byte [edi + 0x5aa]
mov byte [ebp - 0x128], al
test al, al
je 0x6297fe8c
cmp dl, 3
jne 0x6297fe1c
shl byte [ebp - 0x128], 4
imul eax, esi, 0x368
xor edi, edi
mov dword [ebp - 0x140], eax
cmp edi, dword [ebp - 0x11c]
je 0x6297fe8c
mov eax, dword [ebp - 0x140]
test edi, edi
sete cl
lea edx, [ebx + eax + 0x5b0]
inc edi
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 - 0x128]
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 ecx
push ecx
jmp 0x6297fe2a
mov dl, byte [edi + 0x580]
cmp dl, 1
ja 0x6297fe8c
xor edx, 1
and eax, 0xfffffff7
and edx, 1
shl edx, 3
or eax, edx
mov byte [ecx + 0xb], al
imul eax, esi, 0x368
test byte [ebx + eax + 0x5bb], 8
jne 0x6297ff08
mov ecx, dword [ebp - 0x118]
call method.OpenMPT::ModCommand.IsAnyPitchSlide___const
mov edi, eax
mov eax, dword [ebp - 0x15c]
add eax, dword [ebp - 0xb8]
mov edx, dword [ebp - 0x11c]
mov ecx, dword [eax]
add edx, ecx
mov dword [ebp - 0x108], edx
mov edx, edi
test dl, dl
je 0x6297fefa
add ecx, dword [ebp - 0x10c]
mov edi, dword [ebp - 0x108]
mov dword [eax], edi
mov eax, dword [ebp - 0x134]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], esi
lea ecx, [ebp - 0xc0]
call method.OpenMPT::GetLengthMemory.RenderChannel_unsigned_short__unsigned_int__unsigned_int_
sub esp, 0xc
jmp 0x6297ff08
mov edx, dword [ebp - 0x108]
sub edx, dword [ebp - 0x10c]
mov dword [eax], edx
inc word [ebp - 0x150]
jmp 0x6297f44c
mov eax, dword [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.HandleNextRow_OpenMPT::CSoundFile::PlayState__OpenMPT::ModSequence_const__bool__const
mov byte [ebp - 0x148], al
mov eax, dword [ebp - 0x134]
sub esp, 0xc
mov dword [ebp - 0x124], eax
jmp 0x6297e783
cmp dword [ebp - 0x138], 7
jne 0x6297ff97
xor esi, esi
mov eax, dword [ebp + 8]
cmp si, word [eax + 0x753bc]
jae 0x6297ff97
movzx eax, si
mov edx, dword [ebp - 0xb8]
cmp dword [edx + eax*8], 0xffffffff
je 0x6297ff94
mov edi, dword [ebp - 0x124]
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 esi
jmp 0x6297ff56
cmp byte [ebp - 0xc6], 0
je 0x6297ffb3
mov eax, dword [ebx + 0x48]
mov word [ebp - 0xcc], ax
mov eax, dword [ebx + 0x30]
mov dword [ebp - 0xd8], eax
fld qword [ebp - 0xa8]
lea eax, [ebp - 0xe0]
mov ecx, dword [ebp - 0x12c]
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 - 0x130], 0
push edx
je 0x62980327
cmp byte [ebp - 0xc6], 0
jne 0x6297fff7
cmp dword [ebp - 0x120], 0
jne 0x629802d1
mov al, byte [ebx + 0x36aa4]
lea esi, [ebx + 0x36a74]
mov byte [ebp - 0x20], 0
test al, al
je 0x6298002d
lea ecx, [ebp - 0x50]
mov dword [esp], esi
call method.std::map_unsigned_char__float__std::less_unsigned_char___std::allocator_std::pair_unsigned_char_const__float_____.map_std::map_unsigned_char__float__std::less_unsigned_char___std::allocator_std::pair_unsigned_char_const__float______
lea ecx, [ebp - 0x38]
push eax
lea eax, [ebx + 0x36a8c]
mov dword [esp], eax
call sym.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_____::map_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______
mov byte [ebp - 0x20], 1
push eax
mov ecx, esi
call method.std::_Optional_payload_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_._M_reset__
mov eax, dword [ebp + 8]
mov dword [esp], ebx
lea ecx, [eax + 0x1064c8]
call method.OpenMPT::CSoundFile::PlayState.operator_OpenMPT::CSoundFile::PlayState_
mov esi, dword [ebp + 8]
push eax
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x13cfa0]
mov eax, dword [eax + 0x106518]
mov dword [esi + 0x10651c], 0
mov edx, eax
mov dword [esi + 0x106524], eax
shl edx, 0xc
mov eax, dword [esi + 0x1064f8]
mov dword [esi + 0x106528], edx
mov dword [esi + 0x106520], 0
mov dword [esi + 0x1064fc], eax
mov dword [esi + 0x1064dc], 0
mov dword [esi + 0x1064e0], 0
mov dword [esi + 0x1064d8], 0xfffffffe
mov byte [esi + 0x10652c], 1
test ecx, ecx
jne 0x629800b6
xor esi, esi
jmp 0x62980111
call method.OpenMPT::OPL.Reset__
jmp 0x629800b2
movzx ebx, si
imul eax, ebx, 0x368
add eax, dword [ebp + 8]
mov dl, byte [eax + 0x106a4f]
test dl, dl
je 0x629800d9
mov byte [eax + 0x106a52], dl
mov eax, dword [ebp - 0xb8]
lea eax, [eax + ebx*8]
cmp byte [eax + 5], 0xff
jne 0x6298011f
imul eax, ebx, 0x368
mov edi, dword [ebp + 8]
mov eax, dword [edi + eax + 0x106798]
test eax, eax
jne 0x62980149
imul ebx, ebx, 0x368
mov eax, dword [ebp + 8]
inc esi
mov dword [eax + ebx + 0x106740], 0
mov eax, dword [ebp + 8]
cmp si, word [eax + 0x753bc]
jb 0x629800bd
jmp 0x6298018a
cmp dword [ebp - 0x138], 7
je 0x629800e8
imul edx, ebx, 0x368
movzx eax, byte [eax + 5]
add edx, dword [ebp + 8]
cmp al, 0x40
jbe 0x6298013e
mov eax, 0x40
shl eax, 2
mov dword [edx + 0x1069e0], eax
jmp 0x629800e8
test byte [eax + 0x23], 2
je 0x629800fc
mov ecx, dword [edi + 0x13cfa0]
test ecx, ecx
je 0x629800fc
add eax, 0x44
mov dword [esp], ebx
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], ebx
call method.OpenMPT::OPL.NoteCut_unsigned_short__bool_
push eax
push eax
jmp 0x629800fc
lea edi, [ebp - 0xa0]
mov ecx, 8
xor eax, eax
mov ebx, dword [ebp - 0x2c]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x34]
cmp ebx, eax
je 0x6298024c
movzx edi, byte [ebx + 0x10]
imul eax, edi, 0xa0
mov esi, dword [ebp + 8]
mov ecx, edi
mov esi, dword [esi + eax + 0xdd43c]
test esi, esi
je 0x6298023d
mov eax, edi
mov edx, 1
shr eax, 5
mov dword [ebp - 0x108], eax
shl edx, cl
mov eax, dword [ebp + eax*4 - 0xa0]
test eax, edx
jne 0x62980227
cmp edi, 0xf9
jbe 0x62980206
mov dword [esp + 0xc], 0xfa
mov dword [esp + 8], edi
mov dword [esp + 4], 0x62b20485
mov dword [esp], 0x62b20491
call method.std.__throw_out_of_range_fmt_char_const__..._
mov edi, dword [ebp - 0x108]
or eax, edx
mov ecx, esi
mov dword [ebp + edi*4 - 0xa0], eax
mov eax, dword [esi]
mov dword [esp], 0xffffffff
call dword [eax + 0xb0]
push edi
fld dword [ebx + 0x18]
mov eax, dword [esi]
mov ecx, esi
fstp dword [esp + 4]
mov edx, dword [ebx + 0x14]
mov dword [esp], edx
call dword [eax + 0x2c]
push ecx
push ecx
mov dword [esp], ebx
call method.std._Rb_tree_increment_std::_Rb_tree_node_base_const_
mov ebx, eax
jmp 0x6298019c
xor eax, eax
cmp dword [ebp + eax*4 - 0xa0], 0
jne 0x62980266
inc eax
cmp eax, 8
jne 0x6298024e
mov eax, dword [ebp - 0x44]
lea ebx, [ebp - 0x4c]
jmp 0x629802a2
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 0x62980297
imul eax, ebx, 0xa0
mov esi, dword [ebp + 8]
mov ecx, dword [esi + eax + 0xdd43c]
mov eax, dword [ecx]
call dword [eax + 0xb4]
inc ebx
cmp ebx, 0xfa
jne 0x62980268
jmp 0x6298025e
cmp eax, ebx
je 0x629802c7
movzx edx, byte [eax + 0x10]
imul edx, edx, 0xa0
fld dword [eax + 0x14]
mov esi, dword [ebp + 8]
fstp dword [esi + edx + 0xdd4cc]
mov dword [esp], eax
call method.std._Rb_tree_increment_std::_Rb_tree_node_base_const_
jmp 0x629802a2
lea ecx, [ebp - 0x50]
call method.std::_Optional_payload_base_OpenMPT::CSoundFile::PlayState::MIDIMacroEvaluationResults_._M_reset__
jmp 0x62980301
cmp dword [ebp + 0xc], 3
je 0x62980301
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 8]
mov eax, dword [eax + 0x753c4]
mov dword [esi + 0x1064f0], eax
mov eax, dword [esi + 0x753cc]
mov dword [esi + 0x1064f4], eax
mov eax, dword [esi + 0x753c8]
mov dword [esi + 0x106518], eax
mov esi, dword [ebp + 8]
mov al, byte [ebp - 0x13a]
cmp al, byte [esi + 0x76418]
je 0x62980327
mov eax, dword [ebp - 0x144]
lea ecx, [esi + 0x76408]
mov dword [esp], eax
call method.OpenMPT::ModSequenceSet.SetSequence_unsigned_char_
push edx
test byte [ebp + 0xc], 9
lea ebx, [ebp - 0x80]
je 0x62980d2d
mov eax, dword [ebp + 8]
mov dword [esp], ebx
lea ecx, [eax + 0x13cf70]
call method.OpenMPT::RowVisitor.MoveVisitedRowsFrom_OpenMPT::RowVisitor_
push eax
jmp 0x62980d2d
mov al, byte [ebp - 0x10c]
sub eax, 0xc
cmp al, 0x10
ja case.0x629803b7.1
movzx eax, al
jmp dword [eax*4 + 0x62b204c8]
mov dword [esp + 4], edi
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.PositionJump_OpenMPT::CSoundFile::PlayState__unsigned_short__const
mov byte [ebp - 0x10c], 0xc
push eax
push eax
jmp 0x629806fe
movzx eax, byte [ebp - 0x108]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], ebx
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.PatternBreak_OpenMPT::CSoundFile::PlayState__unsigned_short__unsigned_char__const
mov byte [ebp - 0x10c], 0xe
sub esp, 0xc
cmp eax, 0xffffffff
je 0x629806fe
mov dword [ebx + 0x3c], eax
jmp 0x629806fe
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 0x62980596
mov dword [esp + 0xc], 0
mov dword [esp + 8], edi
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebp + 8]
mov dword [esp + 4], eax
movzx eax, word [ebx + 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 - 0x130], 0
je 0x629804b1
mov eax, dword [ebp + 8]
test dword [eax + 0x753b4], 0x1000022
je 0x629804b1
imul eax, edi, 0x368
cmp ecx, 0x270f
jbe 0x629804a3
mov esi, 0x2710
mov eax, ecx
xor edx, edx
div esi
imul esi, edi, 0x368
mov byte [ebx + esi + 0x5ab], al
jmp 0x629804b1
movzx ecx, byte [ebx + eax + 0x5ab]
imul ecx, ecx, 0x2710
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x10c]
mov eax, dword [eax + 0x753b4]
mov dword [ebp - 0x154], eax
and eax, 0x400d
cmp eax, 1
sbb eax, eax
and eax, 0x4baf0
add eax, 0x2710
imul esi, dword [esi + 0x18], 0x2710
cmp ecx, eax
jb 0x62980501
cmp ecx, esi
ja 0x62980593
mov dword [ebx + 0x2c], ecx
jmp 0x62980596
mov eax, ecx
xor edx, edx
mov ecx, 0x2710
div ecx
mov edx, eax
and eax, 0xf0
and edx, 0xf
imul edx, dword [ebp - 0x128]
imul ecx, edx, 0x2710
mov edx, dword [ebx + 0x2c]
cmp eax, 0x10
jne 0x62980533
lea eax, [ecx + edx]
mov dword [ebx + 0x2c], eax
jmp 0x62980545
cmp ecx, edx
jae 0x6298053e
sub edx, ecx
mov dword [ebx + 0x2c], edx
jmp 0x62980545
mov dword [ebx + 0x2c], 0
mov eax, dword [ebp - 0x10c]
lea ecx, [ebp - 0x50]
imul edx, dword [eax + 0x14], 0x2710
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x10c], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], 8
call method.std::bitset_122u_::reference.operator_bool___const
mov edx, dword [ebp - 0x10c]
test al, al
je 0x6298057f
mov esi, 0x26e8f0
cmp edx, esi
ja 0x62980596
mov eax, dword [ebx + 0x2c]
cmp edx, eax
jbe 0x6298058f
mov dword [ebx + 0x2c], edx
jmp 0x62980596
cmp esi, eax
jae 0x62980596
mov dword [ebx + 0x2c], esi
mov byte [ebp - 0x10c], 0x11
jmp 0x629806fe
mov al, byte [ebp - 0x108]
and eax, 0xfffffff0
cmp al, 0xb0
je 0x6298063e
ja 0x629805dc
cmp al, 0x90
je 0x629805ff
cmp al, 0xa0
jne 0x6298077f
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
and edx, 0xf
mov byte [ebx + eax + 0x5ac], dl
jmp 0x6298077f
cmp al, 0xf0
jne 0x6298077f
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
and edx, 0xf
mov byte [ebx + eax + 0x5b4], dl
jmp 0x6298077f
cmp byte [ebp - 0x108], 0x91
ja 0x6298077f
imul eax, edi, 0x368
mov edx, dword [ebx + eax + 0x2c0]
mov eax, edx
and ah, 0xfe
cmp byte [ebp - 0x108], 0x91
jne 0x6298062c
mov eax, edx
or ah, 1
imul edx, edi, 0x368
mov dword [ebx + edx + 0x2c0], eax
jmp 0x6298077f
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], edi
and eax, 0xf
mov dword [esp], ebx
mov dword [esp + 8], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.PatternLoop_OpenMPT::CSoundFile::PlayState__unsigned_short__unsigned_char__const
sub esp, 0xc
jmp 0x6298077f
mov al, byte [ebp - 0x108]
and eax, 0xfffffff0
cmp al, 0x60
je 0x62980692
cmp al, 0xf0
jne 0x62980710
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
and edx, 0xf
mov byte [ebx + eax + 0x5b4], dl
jmp 0x629807d2
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], edi
and eax, 0xf
mov dword [esp], ebx
mov dword [esp + 8], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.PatternLoop_OpenMPT::CSoundFile::PlayState__unsigned_short__unsigned_char__const
sub esp, 0xc
jmp 0x629807d2
mov al, byte [ebp - 0x108]
and eax, 0xfffffff0
cmp al, 0xa0
jne 0x629806f7
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 0x629806f7
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
and edx, 0xf
mov byte [ebx + eax + 0x5ac], dl
mov byte [ebp - 0x10c], 0x1c
cmp dword [ebp - 0x130], 0
je case.0x629803b7.1
jmp case.0x629807e7.10
cmp dword [ebp - 0x130], 0
je case.0x629803b7.1
cmp byte [ebp - 0x108], 0xf
jbe 0x6298072f
mov byte [ebp - 0x10c], 0x13
jmp case.0x629807e7.18
mov esi, dword [ebp + 8]
mov eax, ebx
movzx edx, word [esi + 0x753bc]
imul edx, edx, 0x368
lea esi, [edx + ebx]
mov dl, byte [ebp - 0x108]
mov dword [ebp - 0x10c], esi
and edx, 1
cmp dword [ebp - 0x10c], eax
je 0x62980726
mov esi, dword [eax + 0x2c0]
mov ecx, esi
and ch, 0xbf
test dl, dl
jne 0x62980772
or esi, 0x4000
mov ecx, esi
mov dword [eax + 0x2c0], ecx
add eax, 0x368
jmp 0x62980753
cmp dword [ebp - 0x130], 0
je case.0x629803b7.1
mov byte [ebp - 0x10c], 0x14
mov al, byte [ebp - 0x108]
and eax, 0xfffffff0
cmp al, 0x80
jne case.0x629807e7.10
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], 4
and eax, 0xf
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
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.0x629807e7.10
cmp dword [ebp - 0x130], 0
je case.0x629803b7.1
jmp 0x62980726
movzx eax, al
jmp dword [eax*4 + 0x62b2050c]
cmp byte [ebp - 0x108], 0
je case.0x629807e7.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 0x6298082a
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x594], dl
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x593], dl
jmp case.0x629807e7.10
cmp byte [ebp - 0x108], 0
je case.0x629807e7.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 0x6298087e
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x593], dl
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x594], dl
jmp case.0x629807e7.10
cmp byte [ebp - 0x108], 0
je case.0x629807e7.10
imul eax, edi, 0x368
movzx edx, byte [ebp - 0x108]
mov word [ebx + eax + 0x568], dx
jmp case.0x629807e7.10
cmp byte [ebp - 0x108], 0
je case.0x629807e7.10
imul edx, edi, 0x368
movzx eax, byte [ebp - 0x108]
shl eax, 8
mov dword [ebx + edx + 0x500], eax
jmp case.0x629807e7.10
cmp byte [ebp - 0x108], 0
je case.0x629807e7.10
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x591], dl
jmp case.0x629807e7.10
movzx eax, word [ebp - 0x134]
mov edx, dword [ebp - 0xb8]
mov cl, byte [ebp - 0x108]
mov byte [edx + eax*8 + 5], cl
jmp case.0x629807e7.10
movzx eax, byte [ebp - 0x108]
movzx edx, word [ebp - 0x134]
add eax, 3
mov ecx, dword [ebp - 0xb8]
shr eax, 2
mov byte [ecx + edx*8 + 5], al
jmp case.0x629807e7.10
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x753b4]
test eax, 0x38d5420
jne 0x62980969
cmp byte [ebp - 0x108], 0
js 0x62980969
shl byte [ebp - 0x108], 1
cmp byte [ebp - 0x108], 0x80
ja 0x62980983
movzx eax, byte [ebp - 0x108]
add eax, eax
mov dword [ebx + 0x50], eax
jmp case.0x629807e7.10
test eax, 0x1000022
jne case.0x629807e7.10
mov dword [ebx + 0x50], 0x100
jmp case.0x629807e7.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 0x629809df
imul eax, edi, 0x368
cmp byte [ebp - 0x108], 0
je 0x629809d6
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x599], dl
jmp 0x62980a02
mov al, byte [ebx + eax + 0x599]
jmp 0x629809fc
cmp byte [ebp - 0x108], 0
je 0x629809f6
mov al, byte [ebp - 0x108]
mov byte [ebx + 0x599], al
jmp 0x62980a02
mov al, byte [ebx + 0x599]
mov byte [ebp - 0x108], al
mov esi, dword [ebp - 0x108]
mov cl, byte [ebp - 0x108]
mov edx, dword [ebp + 8]
and ecx, 0xfffffff0
and esi, 0xf
mov edx, dword [edx + 0x753b4]
movzx eax, byte [ebp - 0x108]
mov byte [ebp - 0x108], cl
mov ecx, esi
mov dword [ebp - 0x150], edx
and edx, 0x38d5420
cmp cl, 0xf
jne 0x62980a6a
cmp byte [ebp - 0x108], 0
je 0x62980acd
sar eax, 4
test edx, edx
mov byte [ebp - 0x108], al
jne 0x62980a5f
add eax, eax
mov byte [ebp - 0x108], al
movzx eax, byte [ebp - 0x108]
add eax, eax
jmp 0x62980ac8
cmp byte [ebp - 0x108], 0xf0
jne 0x62980a95
test cl, cl
je 0x62980a9e
add eax, eax
and eax, 0x1e
test edx, edx
mov byte [ebp - 0x108], al
jne 0x62980a8c
shl byte [ebp - 0x108], 1
movzx eax, byte [ebp - 0x108]
jmp 0x62980af0
cmp byte [ebp - 0x108], 0
je 0x62980acd
sar eax, 4
test edx, edx
lea ecx, [eax*4]
mov byte [ebp - 0x108], cl
je 0x62980aba
add eax, eax
mov byte [ebp - 0x108], al
movzx eax, byte [ebp - 0x108]
imul eax, dword [ebp - 0x128]
add dword [ebx + 0x50], eax
jmp 0x62980af3
add eax, eax
and eax, 0x1e
test edx, edx
mov byte [ebp - 0x108], al
jne 0x62980ae2
shl byte [ebp - 0x108], 1
movzx eax, byte [ebp - 0x108]
imul eax, dword [ebp - 0x128]
sub dword [ebx + 0x50], eax
lea eax, [ebx + 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.0x629807e7.10
cmp byte [ebp - 0x108], 0x40
ja case.0x629807e7.10
imul eax, edi, 0x368
movzx edx, byte [ebp - 0x108]
jmp 0x62980bf1
imul eax, edi, 0x368
cmp byte [ebp - 0x108], 0
je 0x62980b50
mov dl, byte [ebp - 0x108]
mov byte [ebx + eax + 0x598], dl
jmp 0x62980b5d
mov al, byte [ebx + eax + 0x598]
mov byte [ebp - 0x108], al
imul eax, edi, 0x368
mov cl, byte [ebp - 0x108]
mov edx, dword [ebx + eax + 0x554]
mov al, byte [ebp - 0x108]
and eax, 0xf
and ecx, 0xfffffff0
cmp al, 0xf
jne 0x62980b92
test cl, cl
je 0x62980ba9
movzx eax, byte [ebp - 0x108]
sar eax, 4
add edx, eax
jmp 0x62980ba0
cmp cl, 0xf0
jne 0x62980ba5
test al, al
je 0x62980bb5
movzx eax, al
sub edx, eax
mov dword [ebp - 0x50], edx
jmp 0x62980bcd
test al, al
je 0x62980bb5
movzx eax, al
imul eax, dword [ebp - 0x128]
jmp 0x62980b9e
mov al, byte [ebp - 0x108]
shr al, 4
movzx eax, al
imul eax, dword [ebp - 0x128]
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, edi, 0x368
mov dword [ebx + eax + 0x554], edx
jmp case.0x629807e7.10
movzx eax, byte [ebp - 0x108]
mov dword [esp + 8], 8
jmp 0x629807b5
cmp byte [ebp - 0x108], 0
je case.0x629807e7.3
imul eax, edi, 0x368
mov dl, byte [ebp - 0x108]
mov byte [ebp - 0x108], 0
mov byte [ebx + eax + 0x591], dl
movzx eax, byte [ebp - 0x108]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Vibrato_OpenMPT::ModChannel__unsigned_int__const
jmp 0x62980c6e
movzx eax, byte [ebp - 0x108]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
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.0x629807e7.10
movzx eax, byte [ebp - 0x108]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Tremolo_OpenMPT::ModChannel__unsigned_int__const
jmp 0x62980c6e
movzx eax, byte [ebp - 0x108]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x118]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
call method.OpenMPT::CSoundFile.Panbrello_OpenMPT::ModChannel__unsigned_int__const
jmp 0x62980c6e
imul eax, edi, 0x368
add eax, ebx
cmp byte [ebp - 0x108], 0
movzx edx, byte [eax + 0x581]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], edx
js 0x62980ceb
movzx eax, byte [eax + 0x5b4]
shl eax, 5
mov esi, dword [ebp + 8]
lea eax, [esi + eax + 0xdc23c]
jmp 0x62980d01
mov eax, dword [ebp - 0x108]
mov esi, dword [ebp + 8]
and eax, 0x7f
shl eax, 5
lea eax, [esi + eax + 0xdc43c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], edi
mov dword [esp], ebx
mov ecx, esi
call method.OpenMPT::CSoundFile.ProcessMIDIMacro_OpenMPT::CSoundFile::PlayState__unsigned_short__bool__OpenMPT::MIDIMacroConfigData::Macro_const__unsigned_char__unsigned_char_
sub esp, 0x18
jmp case.0x629807e7.10
movzx eax, al
jmp dword [eax*4 + 0x62b205c0]
lea ecx, [ebp - 0x74]
call sym.std::map_std::pair_unsigned_short__unsigned_int___std::vector_OpenMPT::RowVisitor::LoopState__std::allocator_OpenMPT::RowVisitor::LoopState_____std::less_std::pair_unsigned_short__unsigned_int_____std::allocator_std::pair_std::pair_unsigned_short__unsigned_int__const__std::vector_OpenMPT::RowVisitor::LoopState__std::allocator_OpenMPT::RowVisitor::LoopState_________::map__
mov ecx, ebx
call method.std::vector_std::vector_bool__std::allocator_bool_____std::allocator_std::vector_bool__std::allocator_bool_______.vector__
lea ecx, [ebp - 0xb8]
call method.std::vector_OpenMPT::GetLengthMemory::ChnSettings__std::allocator_OpenMPT::GetLengthMemory::ChnSettings___.vector__
lea ecx, [ebp - 0xbc]
call method.std::unique_ptr_OpenMPT::CSoundFile::PlayState__std::default_delete_OpenMPT::CSoundFile::PlayState___.unique_ptr__
mov eax, dword [ebp - 0x12c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x20