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

Disassembly:
sub esp, 0x58
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x6c]
movzx eax, word [edi + 0x29]
movzx ecx, word [edi + 0x45]
mov dword [esp + 0x2c], eax
movsx eax, word [edi + 0x43]
imul ebx, eax, 0x36
add ebx, dword [0x5c96aa]
mov dword [esp + 0x14], ebx
test ecx, 0x200
je 0x480565
mov ebp, dword [edi + 0x78]
jmp 0x480568
mov ebp, dword [ebx + 0xc]
movzx eax, word [edi + 0x2b]
mov dword [esp + 0x10], ebp
test cl, 0x20
jne 0x4805dc
test ax, ax
jne 0x480590
cmp word [edi + 0x7c], ax
jne 0x480590
cmp word [edi + 0x7e], ax
jne 0x480590
mov dword [esp + 0x18], 0
jmp 0x48060b
lea eax, [esp + 0x44]
mov dword [esp + 0x18], 1
push eax
call fcn.00495090
lea eax, [esp + 0x48]
push eax
movzx eax, word [edi + 0x7c]
push eax
call fcn.0048f620
lea eax, [esp + 0x50]
push eax
movzx eax, word [edi + 0x7e]
push eax
call fcn.0048f730
mov ax, word [edi + 0x2b]
neg ax
movzx eax, ax
push 2
push eax
lea eax, [esp + 0x60]
push eax
call fcn.0048ef50
add esp, 0x20
jmp 0x48060b
movsx esi, ax
mov dword [esp + 0x18], esi
test esi, esi
je 0x48060b
lea eax, [esp + 0x44]
push eax
call fcn.00495090
mov ax, word [edi + 0x2b]
neg ax
movzx eax, ax
push 2
push eax
lea eax, [esp + 0x50]
push eax
call fcn.0048ef50
add esp, 0x10
mov esi, dword [0xaf4ef8]
movzx ecx, word [edi + 0x4d]
movzx eax, word [esi + 0x24]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
test eax, 0x8000
je 0x48063c
test ecx, ecx
jle 0x480635
lea ecx, [eax - 0x10000]
jmp 0x48063c
mov ecx, 0x10000
sub ecx, eax
movzx eax, word [esi + 0x26]
sar ecx, 1
mov dword [esp + 0x6c], ecx
movzx ecx, word [edi + 0x4f]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
test eax, 0x8000
je 0x48066d
test ecx, ecx
jle 0x480666
lea ecx, [eax - 0x10000]
jmp 0x48066d
mov ecx, 0x10000
sub ecx, eax
movsx edx, word [ebx + 4]
mov eax, dword [ebx + 0x18]
sar ecx, 1
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], eax
test edx, edx
jle 0x480780
mov ebx, dword [esp + 0x6c]
mov esi, 0xaf86a8
movsx edx, word [eax]
imul edx, ebp
movsx ebp, word [eax + 2]
movsx eax, word [eax + 4]
imul ebp, dword [esp + 0x10]
imul eax, dword [esp + 0x10]
sar edx, 8
mov dword [esp + 0x20], edx
mov dword [esi + 0x10], 0
sar ebp, 8
sar eax, 8
cmp dword [esp + 0x18], 0
mov dword [esp + 0x6c], eax
mov dword [esi - 4], ebp
je 0x480748
mov edx, dword [esp + 0x58]
imul edx, eax
mov eax, dword [esp + 0x54]
imul eax, ebp
add edx, eax
mov eax, dword [esp + 0x50]
imul eax, dword [esp + 0x20]
add edx, eax
mov eax, dword [esp + 0x44]
imul eax, dword [esp + 0x20]
sar edx, 0xe
mov dword [esi - 4], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x48]
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x60]
sar ecx, 0xe
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x64]
imul ecx, dword [esp + 0x6c]
imul eax, ebp
mov ebp, edx
mov edx, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x5c]
imul eax, dword [esp + 0x20]
add ecx, eax
sar ecx, 0xe
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x30]
lea eax, [edx + ebx]
mov dword [esi - 8], eax
mov eax, dword [esp + 0x6c]
add eax, ecx
mov dword [esi], eax
movsx eax, word [edi + 0x51]
add eax, ebp
mov ebp, dword [esp + 0x10]
mov dword [esi - 4], eax
add esi, 0x20
mov eax, dword [esp + 0x24]
add eax, 6
sub dword [esp + 0x28], 1
mov dword [esp + 0x24], eax
jne 0x480693
mov ebx, dword [esp + 0x14]
movsx ebp, word [ebx + 2]
mov esi, dword [ebx + 0x10]
test ebp, ebp
jle 0x4807ee
nop dword [eax + eax]
movsx eax, word [esi + 0x28]
movsx ecx, word [esi + 0x2a]
movsx edx, word [esi + 0x2c]
shl eax, 5
shl ecx, 5
add eax, 0xaf86a0
shl edx, 5
add ecx, 0xaf86a0
add edx, 0xaf86a0
test byte [esi + 4], 1
je 0x4807cc
push edx
push ecx
push eax
call fcn.004ad540
add esp, 0xc
movzx eax, ax
jmp 0x4807e3
movsx eax, word [edi + 0x2b]
mov eax, eax
test eax, eax
jns 0x4807db
add eax, 0x1ff
sar eax, 9
movzx eax, word [esi + eax*2 + 0x30]
mov word [esi], ax
add esi, 0x3c
sub ebp, 1
jne 0x480790
movsx edi, word [ebx + 4]
mov esi, 0xaf86a0
test edi, edi
jle 0x480811
nop dword [eax + eax]
push esi
call fcn.0048aa50
add esp, 4
add esi, 0x20
sub edi, 1
jne 0x480800
movsx eax, word [ebx + 2]
mov esi, dword [ebx + 0x10]
mov dword [esp + 0x28], eax
test eax, eax
jle 0x48093a
movsx edi, word [esi + 0x28]
movsx ecx, word [esi + 0x2a]
movsx ebx, word [esi + 0x2c]
movsx ebp, word [esi + 0x2e]
shl edi, 5
shl ecx, 5
add edi, 0xaf86a0
shl ebx, 5
add ecx, 0xaf86a0
shl ebp, 5
add ebx, 0xaf86a0
add ebp, 0xaf86a0
mov dword [esp + 0x34], edi
test byte [esi + 0x3b], 1
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebp
jne 0x480882
mov eax, dword [esp + 0x14]
test byte [eax], 2
jne 0x480882
movsx eax, word [esi]
mov al, byte [eax + 0x5cea41]
jmp 0x48088b
movsx eax, word [esi]
mov al, byte [eax + 0x5cee41]
push ebx
push ecx
movzx eax, al
push edi
mov dword [esp + 0x78], eax
call fcn.00482b30
fstp dword [esp + 0x3c]
movss xmm0, dword [esp + 0x3c]
xorps xmm1, xmm1
add esp, 0xc
comiss xmm0, xmm1
jbe 0x4808dc
push dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
movsx ecx, byte [esi + 0x3a]
push 2
push 1
movsx eax, byte [eax + 6]
push 0
push dword [esp + 0x7c]
add ecx, eax
lea eax, [esp + 0x48]
neg ecx
push ecx
push eax
push esi
call fcn.0047fab0
add esp, 0x20
cmp byte [esi + 6], 3
jbe 0x48092c
push ebp
push ebx
push edi
call fcn.00482b30
fstp dword [esp + 0x3c]
movss xmm0, dword [esp + 0x3c]
xorps xmm1, xmm1
add esp, 0xc
comiss xmm0, xmm1
jbe 0x48092c
push dword [esp + 0x2c]
mov eax, dword [esp + 0x18]
movsx ecx, byte [esi + 0x3a]
push 3
push 2
movsx eax, byte [eax + 6]
push 0
push dword [esp + 0x7c]
add ecx, eax
lea eax, [esp + 0x48]
neg ecx
push ecx
push eax
push esi
call fcn.0047fab0
add esp, 0x20
add esi, 0x3c
sub dword [esp + 0x28], 1
jne 0x480824
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret