Function at 0x6299652c
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
mov edi, ecx
push esi
push ebx
sub esp, 0x5c
mov esi, dword [esp + 0x80]
mov dl, byte [esp + 0x70]
add esi, dword [esp + 0x84]
mov eax, dword [esp + 0x7c]
mov byte [esp + 0x26], dl
mov bl, byte [esp + 0x78]
mov dl, byte [esp + 0x74]
mov byte [esp + 0x47], bl
mov byte [esp + 0x46], dl
mov byte [esp + 0x45], al
mov dword [esp + 0x20], esi
mov ebp, dword [esp + 0x80]
test al, al
js 0x62996587
movsx eax, al
mov dword [esp + 0x30], eax
movsx eax, byte [esp + 0x26]
mov dword [esp + 0x34], eax
jmp 0x629966b6
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x80]
jbe 0x62996780
mov esi, dword [esp + 0x80]
mov eax, dword [edi]
mov dl, byte [esp + 0x26]
inc dword [esp + 0x80]
mov byte [eax + esi], dl
jmp 0x62996587
cmp dl, cl
jl 0x629965ce
inc esi
cmp dword [esp + 0x20], esi
je 0x629966f5
mov ebx, dword [esp + 0x88]
mov cl, byte [ebx + esi]
cmp al, cl
jle 0x629965b1
mov eax, esi
sub eax, ebp
cmp ebp, dword [esp + 0x80]
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x46]
mov byte [esp + 0x27], al
je 0x629965ef
mov al, byte [esp + 0x26]
mov byte [esp + 0x27], al
mov al, byte [esp + 0x47]
cmp dword [esp + 0x20], esi
mov byte [esp + 0x44], al
je 0x62996605
mov al, byte [esp + 0x26]
mov byte [esp + 0x44], al
movsx eax, byte [esp + 0x27]
mov dword [esp + 4], 0
mov dword [esp], eax
mov dword [esp + 0x38], eax
call method.OpenMPT::ITCompression.GetWidthChangeSize_signed_char__bool_
movsx ecx, al
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
inc eax
mov dl, byte [esp + 0x45]
imul eax, dword [esp + 0x2c]
imul ebx, dword [esp + 0x2c]
inc edx
lea eax, [ecx + eax]
cmp dword [edi + 0x40], esi
mov dword [esp + 0x28], ebx
movsx edx, dl
mov dword [esp + 0x3c], eax
jne 0x629966fe
mov bl, byte [esp + 0x26]
cmp byte [esp + 0x27], bl
je 0x6299665e
add dword [esp + 0x28], ecx
mov ebx, dword [esp + 0x3c]
cmp dword [esp + 0x28], ebx
mov cl, byte [esp + 0x45]
setae al
lea ebx, [ecx - 1]
test al, al
movsx ecx, byte [esp + 0x44]
movsx ebx, bl
jne 0x62996680
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x88]
mov dword [esp + 8], ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], ebp
mov dword [esp + 0xc], ebx
mov dword [esp + 4], eax
mov dword [esp], edx
mov ecx, edi
call method.void_OpenMPT::ITCompression::SquishRecurse_OpenMPT.IT8BitParams__signed_char__signed_char__signed_char__signed_char__unsigned_int__unsigned_int__OpenMPT::IT8BitParams::sample_t_const_
sub esp, 0x1c
mov ebp, esi
cmp dword [esp + 0x20], ebp
jbe 0x62996780
mov eax, dword [esp + 0x88]
mov cl, byte [eax + ebp]
mov eax, dword [esp + 0x30]
mov al, byte [eax + 0x62b3116c]
cmp cl, al
jl 0x6299676f
mov esi, dword [esp + 0x30]
mov dl, byte [esi + 0x62b31178]
cmp cl, dl
jg 0x6299676f
mov esi, ebp
jmp 0x629965b5
mov esi, dword [esp + 0x20]
jmp 0x629965ce
mov dword [esp], edx
mov dword [esp + 4], 0
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], edx
call method.OpenMPT::ITCompression.GetWidthChangeSize_signed_char__bool_
mov dword [esp + 4], 0
movsx eax, al
add eax, dword [esp + 0x3c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call method.OpenMPT::ITCompression.GetWidthChangeSize_signed_char__bool_
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x48]
movsx eax, al
add ebx, ecx
mov dword [esp + 0x3c], eax
add ebx, eax
mov al, byte [esp + 0x26]
cmp byte [esp + 0x27], al
jne 0x62996758
sub ebx, ecx
mov cl, byte [esp + 0x26]
cmp byte [esp + 0x44], cl
jne 0x62996766
sub ebx, dword [esp + 0x3c]
cmp ebx, dword [esp + 0x40]
jmp 0x62996666
mov eax, dword [edi]
mov bl, byte [esp + 0x26]
lea esi, [ebp + 1]
mov byte [eax + ebp], bl
jmp 0x629966b4
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x1c