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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov edi, dword [esp + 0x90]
mov dword [esp + 0x64], sym.allegro_5.0.10_monolith_mt.dll__dumb_sigtype_it
mov dword [esp], 0x10
call fcn.647d4284
mov esi, eax
test eax, eax
je 0x64742176
mov dword [esp], 0x43c
call fcn.647d4284
mov dword [esi], eax
test eax, eax
je 0x64742621
mov dword [esp + 8], edi
mov dword [esp + 4], 0x43c
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
mov dword [esi + 8], eax
test eax, eax
jle 0x6474260c
cmp eax, 0x43b
jle 0x64742180
mov eax, dword [esi]
movzx ebx, byte [eax + 0x438]
shl ebx, 0x18
movzx edx, byte [eax + 0x439]
shl edx, 0x10
or ebx, edx
movzx edx, byte [eax + 0x43b]
or ebx, edx
movzx eax, byte [eax + 0x43a]
shl eax, 8
or ebx, eax
mov dword [esi + 4], 0
mov dword [esi + 0xc], edi
mov dword [esp + 4], sym.allegro_5.0.10_monolith_mt.dll_buffer_mod_dfs
mov dword [esp], esi
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_open_ex
mov dword [esp + 0x48], eax
test eax, eax
je 0x64742176
mov dword [esp], 0xe8
call fcn.647d4284
mov dword [esp + 0x44], eax
test eax, eax
mov eax, dword [esp + 0x48]
je 0x6474216e
mov dword [esp + 8], eax
mov dword [esp + 4], 0x14
mov eax, dword [esp + 0x44]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
cmp eax, 0x13
mov eax, dword [esp + 0x44]
jle 0x647425da
mov byte [eax + 0x14], 0
mov dword [eax + 0x2c], 0x1f
cmp ebx, 0x4d214b21
je 0x647421a9
ja 0x64742187
cmp ebx, 0x43443831
je 0x6474232a
ja 0x64742358
cmp ebx, 0x3136434e
je 0x64742341
cmp ebx, 0x3332434e
je 0x647423a2
cmp bx, 0x4348
je 0x647423b9
mov eax, ebx
and eax, 0xffffff
cmp eax, 0x43484e
je 0x647425d5
mov eax, ebx
xor al, al
cmp eax, 0x54445a00
je 0x647425ad
mov eax, dword [esp + 0x44]
mov dword [eax + 0x2c], 0xf
mov eax, 0x4b0
mov ebx, 0xf
mov dword [esp + 0x4c], 4
mov dword [esp], eax
call fcn.647d4284
mov edx, dword [esp + 0x44]
mov dword [edx + 0xd8], eax
test eax, eax
je 0x647425f3
mov dword [edx + 0x20], 0
mov dword [edx + 0xcc], 0
mov dword [edx + 0xd4], 0
mov dword [edx + 0xdc], 0
mov dword [edx + 0xe0], 0
mov dword [edx + 0xe4], 0
mov dword [edx + 0x28], 0
test ebx, ebx
jle 0x64741df2
lea edx, [ebx + ebx*4]
shl edx, 4
add edx, eax
mov dword [eax + 0x4c], 0
add eax, 0x50
cmp eax, edx
jne 0x64741c9e
xor edi, edi
xor esi, esi
mov ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
jmp 0x64741d62
mov byte [ebp + 0x2b], 1
mov byte [ebp + 0x2e], 0
mov eax, dword [esp + 0x28]
shl eax, 4
sar al, 4
movsx eax, al
shl eax, 5
mov dword [esp + 0x58], eax
fild dword [esp + 0x58]
fstp qword [esp + 8]
mov dword [esp], 0x9ef55d71
mov dword [esp + 4], 0x3ff000ec
call fcn.647d446c
fmul dword [0x64814558]
fnstcw word [esp + 0x5e]
mov ax, word [esp + 0x5e]
mov ah, 0xc
mov word [esp + 0x5c], ax
fldcw word [esp + 0x5c]
fistp dword [ebp + 0x3c]
fldcw word [esp + 0x5e]
mov eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x30]
cmp eax, ecx
jle 0x64741d25
mov dword [ebp + 0x38], ecx
mov eax, ecx
sub eax, dword [ebp + 0x34]
cmp eax, 2
jle 0x64741d31
or byte [ebp + 0x2b], 0x10
mov byte [ebp + 0x48], 0
mov byte [ebp + 0x49], 0
mov byte [ebp + 0x4a], 0
mov byte [ebp + 0x4b], 0
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_error
test eax, eax
jne 0x6474215e
inc esi
add edi, 0x50
mov eax, dword [esp + 0x44]
cmp esi, dword [eax + 0x2c]
jge 0x64741df2
mov ebp, dword [eax + 0xd8]
add ebp, edi
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x16
mov dword [esp], ebp
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
mov byte [ebp + 0x16], 0
mov byte [ebp + 0x1d], 0
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_mgetw
shl eax, 1
mov dword [ebp + 0x30], eax
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getc
mov dword [esp + 0x28], eax
mov byte [ebp + 0x2c], 0x40
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getc
mov byte [ebp + 0x2d], al
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_mgetw
lea ecx, [eax + eax]
mov dword [ebp + 0x34], ecx
mov dword [esp], ebx
mov dword [esp + 0x20], ecx
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_mgetw
mov ecx, dword [esp + 0x20]
lea eax, [ecx + eax*2]
mov dword [ebp + 0x38], eax
mov eax, dword [ebp + 0x30]
test eax, eax
jg 0x64741cbd
mov byte [ebp + 0x2b], 0
inc esi
add edi, 0x50
mov eax, dword [esp + 0x44]
cmp esi, dword [eax + 0x2c]
jl 0x64741d62
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getc
mov edx, dword [esp + 0x44]
mov dword [edx + 0x24], eax
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getc
mov edx, dword [esp + 0x44]
mov byte [edx + 0xd0], al
mov ecx, dword [edx + 0x24]
mov eax, ecx
dec eax
cmp eax, 0x7f
ja 0x64742446
mov dword [esp], pe_nt_image_headers32
call fcn.647d4284
mov edx, dword [esp + 0x44]
mov dword [edx + 0xcc], eax
test eax, eax
je 0x64742446
mov edx, dword [esp + 0x48]
mov dword [esp + 8], edx
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
cmp eax, 0x7f
mov eax, dword [esp + 0x44]
jle 0x64742162
cmp dword [eax + 0x2c], 0x1f
je 0x64742429
mov dword [eax + 0x30], 0xffffffff
mov ebx, dword [eax + 0xcc]
mov ecx, 0xffffffff
xor eax, eax
mov esi, dword [esp + 0x44]
nop
movzx edx, byte [ebx + eax]
cmp edx, ecx
jle 0x64741e9d
mov dword [esi + 0x30], edx
mov ecx, edx
inc eax
cmp eax, 0x80
jne 0x64741e90
lea esi, [ecx + 1]
mov eax, dword [esp + 0x44]
mov dword [eax + 0x30], esi
mov eax, dword [eax + 0x24]
cmp eax, 0x7f
jle 0x64742407
lea ebx, [esi + esi*2]
shl ebx, 2
mov dword [esp], ebx
call fcn.647d4284
mov ecx, dword [esp + 0x44]
mov dword [ecx + 0xdc], eax
test eax, eax
je 0x64742400
add ebx, eax
test esi, esi
jle 0x6474258d
mov dword [eax + 8], 0
add eax, 0xc
cmp eax, ebx
jne 0x64741ee5
mov edx, dword [esp + 0x4c]
shl edx, 8
mov dword [esp + 0x54], edx
mov dword [esp], edx
call fcn.647d4284
mov dword [esp + 0x38], eax
test eax, eax
je 0x6474215e
mov ebp, dword [esp + 0x4c]
test ebp, ebp
jne 0x64742307
mov dword [esp + 0x28], 8
mov ecx, dword [esp + 0x28]
lea ecx, [ecx*4 - 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x50], 0
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
lea edx, [eax + edx*4]
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0x50]
lea edx, [ecx + ecx*2]
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0xdc]
lea ebx, [eax + edx*4]
mov dword [ebx], 0x40
mov edi, dword [esp + 0x4c]
test edi, edi
jne 0x647422df
xor esi, esi
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x38]
mov dword [esp + 8], edi
mov dword [esp + 4], 0x10
lea eax, [esi + ebp]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
add esi, 0x20
cmp esi, 0x800
jne 0x64741f7c
mov si, 0x10
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x38]
nop
mov dword [esp + 8], edi
mov dword [esp + 4], 0x10
lea eax, [ebp + esi]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
add esi, 0x20
cmp esi, 0x810
jne 0x64741fac
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_error
test eax, eax
jne 0x64742152
mov dword [ebx + 4], 0x40
mov ebp, 0x40
mov ecx, 0x40
xor edi, edi
nop
mov esi, dword [esp + 0x28]
test esi, esi
jle 0x6474202c
mov eax, dword [esp + 0x38]
add eax, edi
mov esi, dword [esp + 0x40]
add esi, edi
mov dl, byte [eax + 1]
or edx, dword [eax]
or dl, byte [eax + 2]
or dl, byte [eax + 3]
je 0x6474201d
inc ecx
mov dword [ebx + 4], ecx
add eax, 4
cmp eax, esi
jne 0x6474200c
mov edx, dword [esp + 0x3c]
lea edi, [edx + edi + 4]
dec ebp
jne 0x64741ff8
lea eax, [ecx*8]
sub eax, ecx
mov dword [esp], eax
call fcn.647d4284
mov esi, eax
mov dword [ebx + 8], eax
test eax, eax
je 0x64742152
mov dword [esp + 0x30], 0x40
mov dword [esp + 0x34], 0
lea esi, [esi]
mov edx, dword [esp + 0x28]
test edx, edx
jle 0x647421d0
mov ebx, dword [esp + 0x38]
add ebx, dword [esp + 0x34]
xor edi, edi
jmp 0x647420ae
test al, al
je 0x64742083
or byte [esi + 1], 2
mov byte [esi + 3], al
mov dword [esp + 8], esi
movzx eax, byte [ebx + 3]
mov dword [esp + 4], eax
mov al, byte [ebx + 2]
and eax, 0xf
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll__dumb_it_xm_convert_effect
add esi, 7
inc edi
add ebx, 4
cmp edi, dword [esp + 0x28]
je 0x647421c0
mov dl, byte [ebx]
mov cl, byte [ebx + 1]
movzx ebp, byte [ebx + 2]
mov al, cl
or eax, edx
or eax, ebp
or al, byte [ebx + 3]
je 0x647420a0
mov eax, ebp
shr al, 4
mov ebp, 0xfffffff0
and ebp, edx
or eax, ebp
and edx, 0xf
shl edx, 8
movzx ebp, cl
mov ecx, edi
mov byte [esi], cl
mov byte [esi + 1], 0
or edx, ebp
je 0x64742078
mov byte [esi + 1], 1
fld dword [0x6481455c]
push edx
fidiv dword [esp]
pop ecx
fstp qword [esp]
mov byte [esp + 0x20], al
call fcn.647d44a4
fdiv qword [0x64814560]
fadd dword [0x64814568]
fstp qword [esp]
call fcn.647d44b4
fnstcw word [esp + 0x5e]
mov dx, word [esp + 0x5e]
mov dh, 0xc
mov word [esp + 0x5c], dx
fldcw word [esp + 0x5c]
fistp dword [esp + 0x58]
fldcw word [esp + 0x5e]
mov edx, dword [esp + 0x58]
test edx, edx
mov al, byte [esp + 0x20]
js 0x647422d8
cmp edx, 0x77
jle 0x6474214a
mov edx, 0x77
mov byte [esi + 2], dl
jmp 0x64742078
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.647d4274
mov eax, dword [esp + 0x44]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll__dumb_it_unload_sigdata
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_close
xor eax, eax
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
xor ebx, ebx
jmp 0x64741b3d
cmp ebx, 0x4e2e542e
je 0x647421a9
ja 0x64742316
cmp ebx, 0x4d264b21
je 0x647421a9
cmp ebx, 0x4d2e4b2e
jne 0x64741beb
mov eax, 0x9b0
mov ebx, 0x1f
mov dword [esp + 0x4c], 4
jmp 0x64741c34
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x34]
lea eax, [edx + eax + 4]
mov dword [esp + 0x34], eax
mov byte [esi], 0xff
add esi, 7
dec dword [esp + 0x30]
jne 0x64742060
inc dword [esp + 0x50]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x44]
cmp edx, dword [eax + 0x30]
jl 0x64741f4c
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call fcn.647d4274
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x2c]
test eax, eax
jle 0x6474246b
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x44]
jmp 0x64742273
mov edi, dword [ebp + 0x30]
xor esi, esi
test edi, edi
jne 0x6474229c
and ecx, 0xfffffffe
mov byte [ebp + 0x2b], cl
mov dword [esp + 4], esi
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_skip
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_error
test eax, eax
jne 0x6474215e
inc dword [esp + 0x28]
add dword [esp + 0x2c], 0x50
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
cmp edx, dword [eax + 0x2c]
jge 0x6474246b
mov ebp, dword [esp + 0x2c]
add ebp, dword [eax + 0xd8]
mov cl, byte [ebp + 0x2b]
test cl, 0x10
je 0x64742226
mov eax, dword [ebp + 0x38]
mov edi, dword [ebp + 0x30]
cmp eax, edi
jge 0x64742300
mov esi, edi
sub esi, eax
mov dword [ebp + 0x30], eax
mov edi, eax
test edi, edi
je 0x6474222f
mov dword [esp], edi
call fcn.647d4284
mov dword [ebp + 0x4c], eax
test eax, eax
je 0x6474215e
test edi, edi
jle 0x64742235
xor ebx, ebx
jmp 0x647422ba
mov eax, dword [ebp + 0x4c]
lea edi, [eax + ebx]
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getc
mov byte [edi], al
inc ebx
cmp ebx, dword [ebp + 0x30]
jl 0x647422b7
jmp 0x64742235
xor edx, edx
jmp 0x6474214a
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov edx, dword [esp + 0x54]
mov dword [esp + 4], edx
mov eax, dword [esp + 0x38]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_getnc
jmp 0x64741fcf
xor esi, esi
jmp 0x6474222b
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x28], edx
mov ecx, edx
jmp 0x64741f2a
cmp ebx, 0x4f435441
je 0x6474232a
cmp ebx, 0x4f4b5441
jne 0x64741beb
mov eax, 0x9b0
mov ebx, 0x1f
mov dword [esp + 0x4c], 8
jmp 0x64741c34
mov eax, 0x9b0
mov ebx, 0x1f
mov dword [esp + 0x4c], 0x10
jmp 0x64741c34
cmp ebx, 0x464c5434
je 0x647421a9
cmp ebx, 0x464c5438
jne 0x64741beb
xor eax, eax
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + 0xcc]
add edx, eax
shr byte [edx], 1
inc eax
cmp eax, 0x80
jne 0x64742376
mov eax, dword [esp + 0x44]
mov ebx, dword [eax + 0x2c]
lea eax, [ebx + ebx*4]
shl eax, 4
mov dword [esp + 0x4c], 0
jmp 0x64741c34
mov eax, 0x9b0
mov ebx, 0x1f
mov dword [esp + 0x4c], 0x20
jmp 0x64741c34
lea eax, [ebx - 0x31000000]
cmp eax, 0x2ffffff
ja 0x64741c17
mov eax, ebx
and eax, 0xff0000
shr eax, 0x10
sub eax, 0x30
cmp eax, 9
ja 0x64741c17
shr ebx, 0x18
lea edx, [ebx + ebx*4]
lea edx, [eax + edx*2 - 0x1e0]
mov dword [esp + 0x4c], edx
mov eax, 0x9b0
mov ebx, 0x1f
jmp 0x64741c34
mov eax, ecx
jmp 0x64742162
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.647d43c4
test eax, eax
je 0x6474245f
mov edx, dword [esp + 0x44]
mov dword [edx + 0xcc], eax
mov esi, dword [edx + 0x30]
jmp 0x64741ebb
mov dword [esp + 4], 4
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_skip
mov eax, dword [esp + 0x44]
jmp 0x64741e77
mov dword [esp], edx
call sym.allegro_5.0.10_monolith_mt.dll__dumb_it_unload_sigdata
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_close
jmp 0x64742176
mov eax, dword [esp + 0x44]
mov esi, dword [eax + 0x30]
jmp 0x64741ebb
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_close
mov eax, dword [esp + 0x44]
mov dword [eax + 0x34], 0xf1
mov dword [eax + 0x38], pe_nt_image_headers32
mov dword [eax + 0x3c], 0x30
mov dword [eax + 0x40], 6
mov dword [eax + 0x44], 0x7d
mov dword [eax + 0x48], pe_nt_image_headers32
mov edx, eax
add edx, 0x8c
mov ecx, 0x40
mov al, 0x40
mov edi, edx
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x44]
mov dword [eax + 0x4c], 0x10303010
mov dword [eax + 0x50], 0x10303010
mov dword [eax + 0x54], 0x10303010
mov dword [eax + 0x58], 0x10303010
mov dword [eax + 0x5c], 0x10303010
mov dword [eax + 0x60], 0x10303010
mov dword [eax + 0x64], 0x10303010
mov dword [eax + 0x68], 0x10303010
mov dword [eax + 0x6c], 0x10303010
mov dword [eax + 0x70], 0x10303010
mov dword [eax + 0x74], 0x10303010
mov dword [eax + 0x78], 0x10303010
mov dword [eax + 0x7c], 0x10303010
mov dword [eax + 0x80], 0x10303010
mov dword [eax + 0x84], 0x10303010
mov dword [eax + 0x88], 0x10303010
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll__dumb_it_fix_invalid_orders
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], str.TITLE
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x60]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x64]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 1
lea eax, [esp + 0x68]
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov dword [esp], 0xffffffff
call sym.allegro_5.0.10_monolith_mt.dll_make_duh
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x4c]
shl eax, 8
mov dword [esp], eax
call fcn.647d4284
mov dword [esp + 0x38], eax
test eax, eax
jne 0x647421f9
jmp 0x6474215e
and ebx, 0xff
lea edx, [ebx - 0x30]
mov dword [esp + 0x4c], edx
sub ebx, 0x31
cmp ebx, 8
ja 0x64741c17
mov eax, 0x9b0
mov ebx, 0x1f
jmp 0x64741c34
shr ebx, 0x18
jmp 0x647425b3
mov dword [esp], eax
call fcn.647d4274
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_close
jmp 0x64742176
mov dword [esp], edx
call fcn.647d4274
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call sym.allegro_5.0.10_monolith_mt.dll_dumbfile_close
jmp 0x64742176
mov eax, dword [esi]
mov dword [esp], eax
call fcn.647d4274
mov dword [esi], 0
jmp 0x64741b44
mov dword [esp], esi
call fcn.647d4274
jmp 0x64742176