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

Disassembly:
sub esp, 0x54
push ebx
push ebp
push esi
mov esi, dword [esp + 0x70]
mov ecx, dword [esi]
mov dl, byte [ecx + 0x2c]
mov ebp, dword [esi + 4]
mov ecx, dword [esi + 8]
mov eax, dword [ebp + 0xc]
test dl, dl
setne byte [esp + 0xf]
test ecx, ecx
push edi
mov dword [esp + 0x14], ebp
mov dword [esp + 0x28], eax
mov edx, ecx
jge 0x487d30
neg edx
mov ebx, dword [esi + 0x18]
test ebx, ebx
mov eax, ebx
jge 0x487d3b
neg eax
cmp eax, edx
mov dword [esp + 0x24], eax
jg 0x487d47
mov dword [esp + 0x24], edx
mov edi, dword [esi + 0xc]
test edi, edi
mov edx, edi
jge 0x487d52
neg edx
mov esi, dword [esi + 0x1c]
test esi, esi
mov eax, esi
jge 0x487d5d
neg eax
cmp eax, edx
jg 0x487d63
mov eax, edx
cmp eax, 0x10000
jg 0x48800b
cmp dword [esp + 0x24], 0x10000
jg 0x48800b
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x6c]
mov eax, dword [ebp + 0x18]
mov ecx, edx
movzx edx, dh
mov dword [esp + 0x38], edx
movzx edx, byte [esp + 0x6d]
sar ecx, 0x10
xor esi, esi
sar edi, 0x10
cmp ecx, esi
mov ebx, 1
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
jge 0x487db2
xor ecx, ecx
xor ebx, ebx
cmp edi, esi
jge 0x487dbc
xor edi, edi
mov dword [esp + 0x68], esi
mov edx, dword [ebp + 0x10]
dec edx
cmp ecx, edx
jl 0x487dc8
mov ecx, edx
xor ebx, ebx
mov edx, dword [ebp + 0x14]
dec edx
cmp edi, edx
jl 0x487dd6
mov edi, edx
mov dword [esp + 0x68], esi
xor edx, edx
mov dword [esp + 0x3e], edx
mov word [esp + 0x42], dx
mov dword [esp + 0x46], edx
mov word [esp + 0x4a], dx
mov dword [esp + 0x4e], edx
mov word [esp + 0x52], dx
mov dword [esp + 0x56], edx
mov word [esp + 0x5a], dx
mov edx, dword [esp + 0x28]
sub edx, 3
mov word [esp + 0x3c], si
mov word [esp + 0x44], si
mov word [esp + 0x4c], si
mov word [esp + 0x54], si
je 0x487ecb
dec edx
je 0x487e77
dec edx
jne 0x487f6d
mov edx, dword [ebp + 4]
imul eax, edi
add eax, edx
lea esi, [eax + ecx*4]
mov ecx, dword [esi]
lea eax, [esp + 0x3c]
push eax
push ecx
call fcn.004056c0
mov eax, dword [esi + ebx*4]
lea edx, [esp + 0x4c]
push edx
push eax
call fcn.004056c0
mov edi, dword [esp + 0x78]
mov edx, dword [esi + edi]
lea ecx, [esp + 0x5c]
add esi, edi
push ecx
push edx
call fcn.004056c0
mov ecx, dword [esi + ebx*4]
lea eax, [esp + 0x6c]
push eax
push ecx
call fcn.004056c0
add esp, 0x20
jmp 0x487f6d
mov edx, dword [ebp + 4]
imul eax, edi
add eax, edx
lea esi, [eax + ecx*2]
movzx eax, word [esi]
lea edx, [esp + 0x3c]
push edx
push eax
call fcn.00470250
movzx edx, word [esi + ebx*2]
lea ecx, [esp + 0x4c]
push ecx
push edx
call fcn.00470250
mov edx, dword [esp + 0x78]
movzx ecx, word [esi + edx]
add esi, edx
lea eax, [esp + 0x5c]
push eax
push ecx
call fcn.00470250
movzx eax, word [esi + ebx*2]
lea edx, [esp + 0x6c]
push edx
push eax
call fcn.00470250
add esp, 0x20
jmp 0x487f6d
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 4]
mov esi, dword [eax + 0x18]
mov eax, dword [eax + 8]
imul esi, edi
add esi, dword [ebp + 4]
add esi, ecx
test eax, eax
je 0x487ee9
add eax, 4
jmp 0x487eeb
xor eax, eax
movzx edx, byte [esi]
lea ecx, [esp + 0x3c]
push ecx
lea eax, [eax + edx*4]
push eax
call fcn.004701c0
mov eax, dword [ebp + 8]
add esp, 8
test eax, eax
je 0x487f0b
add eax, 4
jmp 0x487f0d
xor eax, eax
movzx edx, byte [esi + ebx]
lea ecx, [esp + 0x44]
push ecx
lea eax, [eax + edx*4]
push eax
call fcn.004701c0
mov edx, dword [esp + 0x70]
mov eax, dword [ebp + 8]
add esp, 8
add esi, edx
test eax, eax
je 0x487f34
add eax, 4
jmp 0x487f36
xor eax, eax
movzx edx, byte [esi]
lea ecx, [esp + 0x4c]
push ecx
lea eax, [eax + edx*4]
push eax
call fcn.004701c0
mov ebp, dword [ebp + 8]
add esp, 8
test ebp, ebp
je 0x487f56
lea eax, [ebp + 4]
jmp 0x487f58
xor eax, eax
movzx edx, byte [esi + ebx]
lea ecx, [esp + 0x54]
push ecx
lea eax, [eax + edx*4]
push eax
call fcn.004701c0
add esp, 8
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x54]
mov edx, 0x100
sub edx, esi
mov eax, edx
imul edx, edi
mov ecx, 0x100
sub ecx, edi
mov edi, dword [esp + 0x4c]
imul eax, ecx
imul ecx, esi
sar edx, 8
sar ecx, 8
imul edi, edx
mov esi, 0x100
sub esi, edx
sub esi, ecx
sar eax, 8
sub esi, eax
imul ebx, esi
add ebx, edi
mov edi, dword [esp + 0x44]
imul edi, ecx
add ebx, edi
mov edi, dword [esp + 0x3c]
imul edi, eax
add ebx, edi
mov edi, dword [esp + 0x70]
shr ebx, 8
and ebx, 0xff00ff
mov dword [edi], ebx
mov ebx, dword [esp + 0x58]
imul ebx, esi
mov esi, dword [esp + 0x50]
imul esi, edx
mov edx, dword [esp + 0x48]
imul edx, ecx
mov ecx, dword [esp + 0x40]
imul ecx, eax
add ebx, esi
add ebx, edx
add ebx, ecx
shr ebx, 8
and ebx, 0xff00ff
mov dword [edi + 4], ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret 0x14
test ecx, ecx
mov edx, ecx
jge 0x488013
neg edx
test ebx, ebx
mov eax, ebx
jge 0x48801b
neg eax
cmp edx, eax
jg 0x488029
test ebx, ebx
jge 0x488025
neg ebx
mov ecx, ebx
jmp 0x48802f
test ecx, ecx
jge 0x48802f
neg ecx
test esi, esi
mov edx, esi
jge 0x488037
neg edx
test edi, edi
mov eax, edi
jge 0x48803f
neg eax
cmp edx, eax
jg 0x48804b
test edi, edi
jge 0x488053
neg edi
jmp 0x488053
test esi, esi
jge 0x488051
neg esi
mov edi, esi
mov eax, dword [esp + 0x68]
mov edx, eax
sar edx, 0x10
mov dword [esp + 0x24], edx
add ecx, eax
mov edx, ecx
sar edx, 0x10
mov dword [esp + 0x1c], edx
or edx, 0xffffffff
sar eax, 8
sub edx, eax
mov eax, dword [esp + 0x6c]
and edx, 0xff
mov dword [esp + 0x3c], edx
movzx edx, ch
lea ecx, [edi + eax]
mov dword [esp + 0x44], edx
mov esi, eax
sar eax, 8
or edx, 0xffffffff
sub edx, eax
xor ebx, ebx
sar esi, 0x10
mov edi, ecx
sar edi, 0x10
movzx eax, ch
and edx, 0xff
cmp esi, edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], edi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x74], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x6c], esi
jg 0x488347
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x24]
cmp ebp, dword [esp + 0x1c]
mov dword [esp + 0x30], ebp
jg 0x48827c
xor ecx, ecx
xor di, di
test ebp, ebp
mov dword [esp + 0x5e], ecx
jl 0x48826b
test edx, edx
jl 0x48826b
cmp ebp, dword [esi + 0x10]
jge 0x48826b
cmp edx, dword [esi + 0x14]
jge 0x48826b
mov eax, dword [esi + 0x18]
imul eax, edx
add eax, dword [esi + 4]
mov edx, dword [esp + 0x28]
sub edx, 3
je 0x48818e
dec edx
je 0x488159
dec edx
jne 0x4881bb
mov eax, dword [eax + ebp*4]
mov edx, eax
shr edx, 0x10
movzx si, dl
mov ecx, eax
mov edx, eax
shr ecx, 0x18
shr edx, 8
movzx dx, dl
movzx di, al
jmp 0x4881c5
movzx eax, word [eax + ebp*2]
mov edx, eax
shr edx, 0xa
and edx, 0x1f
mov si, word [edx*4 + 0x68f3e8]
mov edx, eax
shr edx, 5
and edx, 0x1f
mov dx, word [edx*4 + 0x68f3e8]
and eax, 0x1f
mov di, word [eax*4 + 0x68f3e8]
mov cx, 0xff
jmp 0x4881d6
mov esi, dword [esi + 8]
test esi, esi
je 0x48819a
lea ecx, [esi + 4]
jmp 0x48819c
xor ecx, ecx
movzx eax, byte [eax + ebp]
movzx si, byte [ecx + eax*4 + 2]
movzx dx, byte [ecx + eax*4 + 1]
movzx di, byte [ecx + eax*4]
lea eax, [ecx + eax*4]
movzx cx, byte [eax + 3]
jmp 0x4881c5
mov dx, word [esp + 0x5e]
mov si, word [esp + 0x60]
test cx, cx
jne 0x4881d6
mov al, byte [esp + 0x13]
test al, al
je 0x488263
cmp ebp, dword [esp + 0x24]
jne 0x4881e2
mov eax, dword [esp + 0x3c]
jmp 0x4881f1
cmp ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x44]
je 0x4881f1
mov eax, 0x100
mov ebx, dword [esp + 0x6c]
cmp ebx, dword [esp + 0x38]
jne 0x488202
imul eax, dword [esp + 0x4c]
jmp 0x488212
cmp ebx, dword [esp + 0x34]
jne 0x48820f
imul eax, dword [esp + 0x54]
jmp 0x488212
shl eax, 8
mov ebx, dword [esp + 0x68]
mov ebp, dword [esp + 0x74]
movzx edx, dx
sar eax, 8
imul edx, eax
add ebx, edx
movzx esi, si
imul esi, eax
movzx edx, di
imul edx, eax
movzx ecx, cx
imul ecx, eax
add ebp, esi
mov esi, dword [esp + 0x18]
add esi, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x68], ebx
mov ebx, dword [esp + 0x2c]
add edx, ecx
add ebx, eax
mov dword [esp + 0x74], ebp
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x2c], ebx
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x1c]
inc ebp
cmp ebp, eax
mov dword [esp + 0x30], ebp
jle 0x4880f2
mov eax, dword [esp + 0x34]
inc edx
cmp edx, eax
mov dword [esp + 0x6c], edx
jle 0x4880e0
mov esi, dword [esp + 0x20]
test esi, esi
je 0x488320
mov ecx, dword [esp + 0x70]
xor edx, edx
cmp ebx, 0x10000
jae 0x4882eb
mov eax, 0x1000000
div ebx
pop edi
mov edx, eax
imul edx, dword [esp + 0x70]
shr edx, 0x18
mov word [ecx + 4], dx
mov edx, eax
imul edx, dword [esp + 0x64]
shr edx, 0x18
mov word [ecx + 2], dx
mov edx, eax
imul eax, esi
imul edx, dword [esp + 0x14]
pop esi
shr edx, 0x18
shr eax, 0x18
pop ebp
mov word [ecx], dx
mov word [ecx + 6], ax
pop ebx
add esp, 0x54
ret 0x14
mov eax, dword [esp + 0x74]
div ebx
xor edx, edx
pop edi
mov word [ecx + 4], ax
mov eax, dword [esp + 0x64]
div ebx
xor edx, edx
mov word [ecx + 2], ax
mov eax, dword [esp + 0x14]
div ebx
xor edx, edx
mov word [ecx], ax
mov eax, esi
div ebx
pop esi
pop ebp
pop ebx
mov word [ecx + 6], ax
add esp, 0x54
ret 0x14
test ebx, ebx
je 0x488347
mov al, byte [esp + 0x13]
test al, al
je 0x488347
mov eax, dword [esp + 0x70]
pop edi
pop esi
pop ebp
mov dword [eax], 0
mov dword [eax + 4], 0
pop ebx
add esp, 0x54
ret 0x14
mov ecx, dword [esp + 0x24]
test ecx, ecx
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
jge 0x48835b
xor ecx, ecx
jmp 0x488365
mov eax, dword [esi + 0x10]
cmp ecx, eax
jl 0x488365
lea ecx, [eax - 1]
test edx, edx
jge 0x48836d
xor edx, edx
jmp 0x488377
mov eax, dword [esi + 0x14]
cmp edx, eax
jl 0x488377
lea edx, [eax - 1]
mov eax, dword [esi + 0x18]
mov ebx, dword [esi + 4]
imul eax, edx
mov edx, dword [esp + 0x28]
add eax, ebx
sub edx, 3
je 0x488422
dec edx
je 0x4883d4
dec edx
jne 0x48845d
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x70]
mov edx, eax
shr edx, 0x18
mov word [ecx + 6], dx
mov edx, eax
shr edx, 0x10
movzx dx, dl
mov word [ecx + 4], dx
mov edx, eax
pop edi
shr edx, 8
pop esi
movzx dx, dl
movzx ax, al
pop ebp
mov word [ecx + 2], dx
mov word [ecx], ax
pop ebx
add esp, 0x54
ret 0x14
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x70]
mov edx, eax
shr edx, 0xa
and edx, 0x1f
mov word [ecx + 6], 0xff
mov dx, word [edx*4 + 0x68f3e8]
mov word [ecx + 4], dx
mov edx, eax
shr edx, 5
and edx, 0x1f
mov dx, word [edx*4 + 0x68f3e8]
pop edi
pop esi
and eax, 0x1f
mov word [ecx + 2], dx
mov ax, word [eax*4 + 0x68f3e8]
pop ebp
mov word [ecx], ax
pop ebx
add esp, 0x54
ret 0x14
mov esi, dword [esi + 8]
test esi, esi
je 0x48842e
lea edx, [esi + 4]
jmp 0x488430
xor edx, edx
movzx ecx, byte [eax + ecx]
lea eax, [edx + ecx*4]
movzx dx, byte [eax + 3]
mov ecx, dword [esp + 0x70]
mov word [ecx + 6], dx
movzx dx, byte [eax + 2]
mov word [ecx + 4], dx
movzx dx, byte [eax + 1]
mov word [ecx + 2], dx
movzx ax, byte [eax]
mov word [ecx], ax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret 0x14