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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov ebx, dword [esp + 0x70]
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x74]
mov edi, dword [eax]
mov edx, dword [edi + 8]
mov dword [esp + 0x2c], edx
mov eax, dword [eax + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x80]
imul eax, dword [ebx + 0x24]
mov edx, dword [edi + 4]
sar eax, 1
cmp eax, edx
jle 0x6472ded3
mov eax, edx
sub eax, dword [edi]
test eax, eax
jle 0x6472df2c
cdq
idiv dword [esp + 0x2c]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x30]
lea eax, [edx + eax - 1]
cdq
idiv dword [esp + 0x30]
shl eax, 2
mov dword [esp + 4], eax
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll__vorbis_block_alloc
mov dword [esp + 0x4c], eax
cmp dword [esp + 0x80], 0
jle 0x6472df36
mov eax, dword [esi]
test eax, eax
jne 0x6472df38
xor eax, eax
mov edx, dword [esp + 0x80]
jmp 0x6472df27
mov ebp, dword [esi + eax*4]
test ebp, ebp
jne 0x6472df38
inc eax
cmp eax, edx
jne 0x6472df20
xor eax, eax
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
je 0x6472df2c
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 8]
test eax, eax
jle 0x6472df2c
mov dword [esp + 0x48], 0
add ebx, 4
mov dword [esp + 0x40], ebx
mov edx, dword [esp + 0x44]
test edx, edx
jle 0x6472e053
mov ebx, 1
mov cl, byte [esp + 0x48]
shl ebx, cl
mov dword [esp + 0x38], ebx
mov ecx, dword [esp + 0x48]
shl ecx, 2
mov dword [esp + 0x3c], ecx
mov edx, dword [esp + 0x4c]
xor ebp, ebp
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x6472e068
mov ecx, dword [esp + 0x30]
test ecx, ecx
jle 0x6472e03f
cmp dword [esp + 0x44], ebp
jle 0x6472e04c
mov esi, dword [esp + 0x2c]
imul esi, ebp
mov eax, dword [esp + 0x44]
sub eax, ebp
mov dword [esp + 0x34], eax
xor ebx, ebx
mov eax, ebp
mov ebp, edx
mov edx, eax
jmp 0x6472dfca
add esi, dword [esp + 0x2c]
cmp ebx, dword [esp + 0x34]
je 0x6472e04c
mov eax, dword [ebp]
mov eax, dword [eax + ebx*4]
mov ecx, dword [esp + 0x38]
test dword [edi + eax*4 + 0x18], ecx
je 0x6472e031
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx + 0x14]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x3c]
mov eax, dword [eax + ecx]
test eax, eax
je 0x6472e031
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov ecx, dword [edi]
add ecx, esi
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x78]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 0x28], edx
call sym.allegro_5.0.10_monolith_mt.dll_vorbis_book_decodevv_add
inc eax
mov edx, dword [esp + 0x28]
je 0x6472df2c
inc ebx
lea eax, [ebx + edx]
cmp ebx, dword [esp + 0x30]
jne 0x6472dfbc
mov edx, ebp
mov ebp, eax
add edx, 4
cmp dword [esp + 0x44], ebp
jg 0x6472df7e
mov ebx, dword [esp + 0x74]
mov eax, dword [ebx + 8]
inc dword [esp + 0x48]
cmp dword [esp + 0x48], eax
jl 0x6472df52
jmp 0x6472df2c
mov ebx, dword [esp + 0x40]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x74]
mov eax, dword [ebx + 0x10]
mov dword [esp], eax
mov dword [esp + 0x28], edx
call sym.allegro_5.0.10_monolith_mt.dll_vorbis_book_decode
cmp eax, 0xffffffff
mov edx, dword [esp + 0x28]
je 0x6472df2c
cmp eax, dword [edi + 0x10]
jge 0x6472df2c
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ecx + eax*4]
mov dword [edx], eax
test eax, eax
jne 0x6472df8a
jmp 0x6472df2c