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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xec
mov ebx, eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ecx
mov esi, dword [esp + 0x108]
mov dword [esp + 0x70], esi
mov edi, dword [esp + 0x10c]
mov dword [esp + 0x60], edi
mov ebp, dword [esp + 0x11c]
mov eax, dword [esp + 0x110]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x114]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x98], 0xffffffff
mov dword [esp + 0x9c], 0xffffffff
mov edx, dword [ebx + 0x1c8]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x118]
test ebp, ebp
je 0x64719883
mov eax, dword [esp + 0x120]
test eax, eax
je 0x64719883
cmp edx, dword [ebp]
je 0x647199ff
mov ecx, dword [esp + 0x120]
dec ecx
xor eax, eax
jmp 0x6471987f
inc eax
cmp edx, dword [ebp + eax*4]
je 0x647199ff
cmp eax, ecx
jne 0x64719874
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov esi, dword [esp + 0x60]
cmp dword [esp + 0x4c], esi
jge 0x64719b48
mov esi, dword [esp + 0x70]
mov dword [esp + 0x68], esi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edi
lea esi, [ebx + 0x18]
mov edi, dword [esp + 0x120]
dec edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x54], ebp
mov ebp, esi
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
sub eax, dword [esp + 0x48]
sbb edx, dword [esp + 0x4c]
cmp edx, 0
jl 0x64719e5f
jle 0x64719e54
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
add esi, dword [esp + 0x38]
adc edi, dword [esp + 0x3c]
mov eax, edi
shr eax, 0x1f
xor edx, edx
add eax, esi
adc edx, edi
shrd eax, edx, 1
sar edx, 1
mov edi, eax
mov dword [esp + 0x40], edx
xor edx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
xor eax, edi
or edx, eax
je 0x64719970
mov edx, dword [ebx]
test edx, edx
je 0x64719e7b
mov eax, dword [ebx + 0x2c4]
test eax, eax
je 0x64719e3a
mov dword [esp + 0xc], 0
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], ecx
mov dword [esp], edx
call eax
inc eax
je 0x64719e3a
mov dword [ebx + 8], edi
mov esi, dword [esp + 0x40]
mov dword [ebx + 0xc], esi
mov dword [esp], ebp
call sym.allegro_5.0.10_monolith_mt.dll_ogg_sync_reset
lea esi, [esp + 0xa0]
nop
mov dword [esp + 4], esi
mov dword [esp], ebp
call sym.allegro_5.0.10_monolith_mt.dll_ogg_sync_pageseek
cmp eax, 0
jl 0x64719e00
jne 0x64719e0c
call fcn.647d428c
mov dword [eax], 0
mov eax, dword [ebx + 0x2c0]
test eax, eax
je 0x64719e3a
mov eax, dword [ebx]
test eax, eax
je 0x64719b81
mov dword [esp + 4], 0x800
mov dword [esp], ebp
call sym.allegro_5.0.10_monolith_mt.dll_ogg_sync_buffer
mov edx, dword [ebx]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x800
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [ebx + 0x2c0]
cmp eax, 0
jle 0x64719b6c
mov dword [esp + 4], eax
mov dword [esp], ebp
call sym.allegro_5.0.10_monolith_mt.dll_ogg_sync_wrote
jmp 0x64719978
cmp dword [esp + 0x74], edx
je 0x64719a47
lea edi, [esp + 0x78]
lea esi, [esp + 0x118]
mov dword [esp + 0x38], ebp
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x118], ebp
mov dword [esp + 4], edi
mov dword [esp], esi
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x38]
mov eax, ebx
call fcn.64717da0
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
cmp dword [esp + 0x118], ebp
jne 0x64719a18
mov ebp, dword [esp + 0x124]
inc ebp
mov dword [ebx + 0x34], ebp
mov eax, dword [ebx + 0x38]
test eax, eax
je 0x64719a61
mov dword [esp], eax
call fcn.647d4274
mov eax, dword [ebx + 0x40]
test eax, eax
je 0x64719a70
mov dword [esp], eax
call fcn.647d4274
mov eax, dword [ebx + 0x3c]
test eax, eax
je 0x64719a7f
mov dword [esp], eax
call fcn.647d4274
mov esi, dword [ebx + 0x34]
lea eax, [esi*8 + 8]
mov dword [esp], eax
call fcn.647d4284
mov dword [ebx + 0x38], eax
shl esi, 5
mov dword [esp + 4], esi
mov eax, dword [ebx + 0x48]
mov dword [esp], eax
call fcn.647d43c4
mov dword [ebx + 0x48], eax
mov eax, dword [ebx + 0x34]
shl eax, 4
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x4c]
mov dword [esp], eax
call fcn.647d43c4
mov dword [ebx + 0x4c], eax
mov esi, dword [ebx + 0x34]
lea eax, [esi*4]
mov dword [esp], eax
call fcn.647d4284
mov dword [ebx + 0x40], eax
lea eax, [esi*8]
mov dword [esp], eax
call fcn.647d4284
mov dword [ebx + 0x3c], eax
shl esi, 4
mov dword [esp], esi
call fcn.647d4284
mov dword [ebx + 0x44], eax
mov edx, dword [ebx + 0x38]
mov ebx, dword [esp + 0x70]
mov dword [edx + ebp*8], ebx
mov esi, dword [esp + 0x60]
mov dword [edx + ebp*8 + 4], esi
mov edi, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov ebx, dword [esp + 0x124]
mov dword [edx + ebx*8], edi
mov dword [edx + ebx*8 + 4], ebp
mov ecx, ebx
shl ecx, 4
add ecx, eax
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
test edx, edx
js 0x64719e72
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
xor eax, eax
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
jg 0x64719b58
mov edi, dword [esp + 0x70]
cmp dword [esp + 0x48], edi
jb 0x647198a7
mov esi, dword [esp + 0x70]
mov dword [esp + 0x68], esi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x6c], edi
jmp 0x64719bb5
jne 0x64719e4c
call fcn.647d428c
mov esi, dword [eax]
test esi, esi
jne 0x64719e3a
mov dword [esp + 0x38], edi
mov edx, dword [esp + 0x40]
mov dword [esp + 0x3c], edx
mov eax, edx
cmp dword [esp + 0x4c], eax
jl 0x647198d4
jg 0x64719ba9
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x48], edx
jb 0x647198d4
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x6c]
mov dword [ebx + 8], esi
mov dword [ebx + 0xc], edi
lea edi, [esp + 0x98]
lea esi, [esp + 0x94]
mov dword [esp + 0x38], ebp
mov ebp, dword [esp + 0x74]
lea esi, [esi]
mov dword [esp + 0x94], ebp
mov dword [esp + 4], edi
mov dword [esp], esi
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x38]
mov eax, ebx
call fcn.64717da0
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
cmp dword [esp + 0x94], ebp
jne 0x64719bd4
xor edx, dword [esp + 0x6c]
xor eax, dword [esp + 0x68]
or edx, eax
je 0x64719c5c
mov edx, dword [ebx]
test edx, edx
je 0x64719e7b
mov eax, dword [ebx + 0x2c4]
test eax, eax
je 0x64719e3a
mov dword [esp + 0xc], 0
mov ebp, dword [esp + 0x68]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x6c]
mov dword [esp + 8], esi
mov dword [esp], edx
call eax
inc eax
je 0x64719e3a
mov dword [ebx + 8], ebp
mov dword [ebx + 0xc], esi
lea eax, [ebx + 0x18]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_ogg_sync_reset
lea esi, [esp + 0xb0]
mov dword [esp + 0x48], esi
lea esi, [esp + 0xc0]
mov dword [esp + 0x54], esi
lea eax, [esp + 0x90]
mov dword [esp + 4], eax
lea eax, [esp + 0x8c]
mov dword [esp], eax
lea ecx, [esp + 0xb0]
mov edx, esi
mov eax, ebx
call fcn.64717554
test eax, eax
jne 0x64719b3d
mov edi, dword [ebx + 0x1c8]
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
lea edx, [esp + 0xc0]
mov eax, ebx
call fcn.64717390
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
mov ebp, dword [esp + 0x124]
inc ebp
mov dword [esp + 0x24], ebp
mov eax, dword [esp + 0x90]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x118]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0x70]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x60]
mov dword [esp + 0xc], esi
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
mov dword [esp], eax
mov dword [esp + 4], edx
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
mov eax, ebx
call fcn.647197cc
test eax, eax
jne 0x64719b3d
mov edx, dword [esp + 0x8c]
test edx, edx
je 0x64719d55
mov dword [esp], edx
mov dword [esp + 0x34], eax
call fcn.647d4274
mov eax, dword [esp + 0x34]
lea ecx, [ebp*8]
mov esi, dword [ebx + 0x38]
mov edx, dword [esp + 0x68]
mov dword [esi + ecx], edx
mov edx, dword [esp + 0x6c]
mov dword [esi + ecx + 4], edx
mov edx, dword [ebx + 0x40]
mov dword [edx + ebp*4], edi
mov edx, dword [ebx + 0x3c]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov dword [edx + ecx], esi
mov dword [edx + ecx + 4], edi
mov edx, ebp
shl edx, 5
add edx, dword [ebx + 0x48]
mov ecx, 8
mov edi, edx
mov esi, dword [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov edx, ebp
shl edx, 4
mov edi, dword [ebx + 0x4c]
add edi, edx
mov cl, 4
mov esi, dword [esp + 0x48]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x44]
mov esi, dword [esp + 0x124]
shl esi, 4
mov edi, dword [esp + 0x98]
mov ebp, dword [esp + 0x9c]
mov dword [ecx + esi + 8], edi
mov dword [ecx + esi + 0xc], ebp
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
mov dword [ecx + edx], edi
mov dword [ecx + edx + 4], ebp
lea ecx, [ecx + esi + 0x18]
sub dword [ecx], edi
sbb dword [ecx + 4], ebp
mov esi, dword [ecx]
mov edi, dword [ecx + 4]
test edi, edi
js 0x64719f39
mov dword [ecx], esi
mov dword [ecx + 4], edi
jmp 0x64719b3d
cdq
sub dword [ebx + 8], eax
sbb dword [ebx + 0xc], edx
jmp 0x64719978
mov edx, dword [ebx + 8]
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], ecx
cdq
add eax, dword [esp + 0x58]
adc edx, dword [esp + 0x5c]
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], edx
mov edx, dword [esp + 0x5c]
not edx
mov eax, dword [esp + 0x58]
xor eax, 0xffffff80
or edx, eax
jne 0x64719e85
mov eax, 0xffffff80
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
jge 0x64719978
jmp 0x64719e3a
cmp eax, 0xffff
ja 0x647198f3
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], eax
mov edx, eax
jmp 0x6471991a
xor eax, eax
xor edx, edx
jmp 0x64719b35
mov eax, 0xffffff7f
jmp 0x64719b3d
test ecx, ecx
js 0x64719f26
mov dword [esp], esi
call sym.allegro_5.0.10_monolith_mt.dll_ogg_page_serialno
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x64719ec6
mov edx, dword [esp + 0x120]
test edx, edx
je 0x64719f03
mov ecx, dword [esp + 0x54]
cmp eax, dword [ecx]
je 0x64719eec
xor edx, edx
mov esi, ecx
mov ecx, dword [esp + 0x64]
jmp 0x64719ec2
inc edx
cmp eax, dword [esi + edx*4]
je 0x64719eec
cmp edx, ecx
jne 0x64719ebc
mov esi, dword [esp + 0x58]
mov dword [esp + 0x68], esi
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x38], edi
mov edx, dword [esp + 0x40]
mov dword [esp + 0x3c], edx
mov eax, edx
jmp 0x64719b8f
mov esi, dword [ebx + 8]
mov edi, dword [ebx + 0xc]
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], edi
mov eax, dword [esp + 0x3c]
jmp 0x64719b8f
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x68], ecx
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x40]
mov dword [esp + 0x3c], edi
mov eax, edi
jmp 0x64719b8f
mov dword [esp + 0x38], edi
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x3c], ecx
mov eax, ecx
jmp 0x64719b8f
xor esi, esi
xor edi, edi
jmp 0x64719df5