Function at 0x6299678c
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 0x629967e7
movsx eax, al
mov dword [esp + 0x30], eax
movsx eax, byte [esp + 0x26]
mov dword [esp + 0x34], eax
jmp 0x62996919
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x80]
jbe 0x629969ea
mov esi, dword [esp + 0x80]
mov eax, dword [edi]
mov dl, byte [esp + 0x26]
inc dword [esp + 0x80]
mov byte [eax + esi], dl
jmp 0x629967e7
cmp dx, cx
jl 0x62996831
inc esi
cmp dword [esp + 0x20], esi
je 0x6299695f
mov ebx, dword [esp + 0x88]
mov cx, word [ebx + esi*2]
cmp ax, cx
jle 0x62996811
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 0x62996852
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 0x62996868
mov al, byte [esp + 0x26]
mov byte [esp + 0x44], al
movsx eax, byte [esp + 0x27]
mov dword [esp + 4], 1
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 0x62996968
mov bl, byte [esp + 0x26]
cmp byte [esp + 0x27], bl
je 0x629968c1
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 0x629968e3
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.IT16BitParams__signed_char__signed_char__signed_char__signed_char__unsigned_int__unsigned_int__OpenMPT::IT16BitParams::sample_t_const_
sub esp, 0x1c
mov ebp, esi
cmp dword [esp + 0x20], ebp
jbe 0x629969ea
mov eax, dword [esp + 0x88]
mov cx, word [eax + ebp*2]
mov eax, dword [esp + 0x30]
mov ax, word [eax + eax + 0x62b31460]
cmp cx, ax
jl 0x629969d9
mov esi, dword [esp + 0x30]
mov dx, word [esi + esi + 0x62b314a0]
cmp cx, dx
jg 0x629969d9
mov esi, ebp
jmp 0x62996816
mov esi, dword [esp + 0x20]
jmp 0x62996831
mov dword [esp], edx
mov dword [esp + 4], 1
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], edx
call method.OpenMPT::ITCompression.GetWidthChangeSize_signed_char__bool_
mov dword [esp + 4], 1
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 0x629969c2
sub ebx, ecx
mov cl, byte [esp + 0x26]
cmp byte [esp + 0x44], cl
jne 0x629969d0
sub ebx, dword [esp + 0x3c]
cmp ebx, dword [esp + 0x40]
jmp 0x629968c9
mov eax, dword [edi]
mov bl, byte [esp + 0x26]
lea esi, [ebp + 1]
mov byte [eax + ebp], bl
jmp 0x62996917
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 0x1c