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

Disassembly:
sub esp, 0xa0
mov eax, dword [esp + 0xac]
movsd xmm0, qword [0x4e9b90]
push ebx
push ebp
mov eax, dword [eax + 0x20]
push esi
mov esi, dword [esp + 0xd4]
push edi
or dword [esp + 0x6c], 0xffffffff
mov edi, esi
mov dword [esp + 0x24], eax
xor eax, eax
push 0xa
pop ecx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0xbc]
movsd qword [esi + 0x18], xmm0
push 3
pop ebp
mov al, byte [edi + 0x1c]
mov ebx, dword [edi + 0x3c]
not al
movzx eax, al
and eax, 8
mov dword [esp + 0x3c], ebp
shl eax, 4
or eax, ebp
mov dword [esp + 0x28], ebx
xor ebp, ebp
mov dword [esp + 0x70], eax
inc ebp
test ebx, ebx
je 0x47fe6e
mov ecx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x54], 0xffffcfff
mov dword [esp + 0x3c], eax
jmp 0x47fee5
push 0x30
lea eax, [esp + 0x84]
push 0
push eax
call fcn.004bf040
mov ecx, dword [edi + 0xc]
lea eax, [esp + 0x78]
mov dword [esp + 0x94], eax
add esp, 0xc
cmp byte [edi + 0x1d], 0
lea eax, [esp + 0x78]
mov dword [esp + 0x8c], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x84], ebp
mov byte [esp + 0x98], 5
mov dword [esp + 0x90], ecx
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ebp
jne 0x47fecc
mov eax, dword [ecx + 0x10]
mov dword [esp + 0xa0], eax
lea ebx, [esp + 0x80]
mov dword [esp + 0x54], 0xfff0ffff
xor ecx, ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], ecx
test ebx, ebx
je 0x480575
xor edx, edx
cmp dword [esp + 0xd0], edx
setne dl
xor eax, eax
cmp dword [esp + 0xd4], eax
mov dword [esp + 0x68], edx
setne al
mov dword [esp + 0x74], eax
mov eax, dword [ebx + 0xc]
xor ebp, ebp
and dword [esp + 0x5c], ebp
xorps xmm0, xmm0
and dword [esp + 0x38], ebp
and dword [esp + 0x60], ebp
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x74]
movlpd qword [esp + 0x44], xmm0
movsd xmm0, qword [0x4e9ac8]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x58], edx
xor edx, edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x2c], 1
movsd qword [esp + 0x30], xmm0
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
cmp edx, dword [ebx + 4]
jge 0x48026e
mov eax, dword [ebx + 8]
push ecx
push dword [esp + 0x40]
push dword [esp + 0xcc]
push dword [esp + 0xcc]
push dword [eax + edx*4]
push dword [esp + 0x38]
push dword [esp + 0xd0]
call fcn.00487219
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x480037
movzx ecx, word [edx + 0x10]
or ebp, 0x11000
mov dword [esp + 0x14], ebp
test cl, 1
je 0x47fffb
mov ecx, dword [edx]
or ebp, 0x40000
mov eax, 0x800
mov dword [esp + 0x14], ebp
test word [ecx + 2], ax
je 0x47ffe3
imul eax, dword [esp + 0x2c], 0x19
mov dword [esp + 0x5c], 1
mov dword [esp + 0x2c], eax
jmp 0x480009
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x480009
mov eax, dword [eax]
test eax, eax
je 0x480009
imul eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
jmp 0x480009
test cl, cl
jns 0x480009
or ebp, 0x80000
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x1c]
or eax, dword [edx + 0x18]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
or eax, dword [edx + 0x1c]
mov edx, dword [esp + 0x18]
inc edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], edx
cmp edx, dword [ebx + 4]
jl 0x47ff70
jmp 0x48003b
mov edx, dword [esp + 0x18]
cmp edx, dword [ebx + 4]
jge 0x48026e
cmp byte [ebx + 0x1a], 0
jne 0x48026e
push dword [esp + 0x10]
mov eax, dword [ebx + 8]
push 0x3c
push dword [esp + 0xcc]
push dword [esp + 0xcc]
mov edi, dword [eax + edx*4]
push edi
push dword [esp + 0x38]
push dword [esp + 0xd0]
call fcn.00487219
add esp, 0x1c
test eax, eax
je 0x480159
push dword [esp + 0x10]
push 0x18
push dword [esp + 0xcc]
push dword [esp + 0xcc]
push edi
push dword [esp + 0x38]
push dword [esp + 0xd0]
call fcn.00487219
push dword [esp + 0x2c]
mov ebx, eax
push 0x24
push dword [esp + 0xe8]
push dword [esp + 0xe8]
push edi
push dword [esp + 0x54]
push dword [esp + 0xec]
call fcn.00487219
movsd xmm0, qword [0x4e9ac8]
add esp, 0x38
movsd qword [esp + 0x30], xmm0
test eax, eax
je 0x4800f3
movsd xmm0, qword [0x4e9ae0]
movsd qword [esp + 0x30], xmm0
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
test ebx, ebx
je 0x48012a
mulsd xmm0, qword [0x4e9ae0]
xor ecx, ecx
or edi, dword [ebx + 0x18]
inc ecx
or ebp, 0x100000
mov dword [esp + 0x38], ecx
or edx, dword [ebx + 0x1c]
mov dword [esp + 0x1c], edi
movsd qword [esp + 0x30], xmm0
mov dword [esp + 0x20], edx
jmp 0x48012e
mov ecx, dword [esp + 0x38]
test eax, eax
je 0x48014b
or edi, dword [eax + 0x18]
inc ecx
or ebp, 0x200000
mov dword [esp + 0x38], ecx
or edx, dword [eax + 0x1c]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
mov ebx, dword [esp + 0x28]
or ebp, 0x22000
mov dword [esp + 0x14], ebp
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0xbc]
lea eax, [esp + 0x64]
push eax
mov eax, dword [esp + 0xbc]
push ebp
push edx
push dword [esp + 0xdc]
push dword [esp + 0x34]
push ebx
push dword [eax + 4]
push dword [esp + 0xd0]
call fcn.0048a60f
add esp, 0x20
test eax, eax
je 0x4801b1
and dword [esp + 0x58], 0
mov eax, dword [esp + 0x64]
neg eax
sbb eax, eax
and eax, 0x2000000
or eax, 0x1022000
or ebp, eax
mov dword [esp + 0x14], ebp
mov ecx, dword [esp + 0x18]
push ecx
push dword [esp + 0xd8]
push dword [esp + 0x2c]
push ebx
push dword [esp + 0xc8]
push dword [esp + 0xc8]
call fcn.0048a108
add esp, 0x18
test eax, eax
je 0x4801eb
and dword [esp + 0x40], 0
or ebp, 0x40022000
mov dword [esp + 0x14], ebp
mov edx, dword [esp + 0x10]
test edx, edx
je 0x48029b
test ebp, ebp
je 0x48029b
mov eax, dword [edx + 4]
mov ecx, dword [edi + 0x34]
mov ebx, dword [edi + 0x30]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x44], eax
test eax, eax
jle 0x48025a
mov edi, dword [edx + 8]
mov esi, ecx
mov edx, dword [edi]
cmp edx, 0x3f
jge 0x480241
xor eax, eax
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
cmovae ecx, eax
not eax
not ecx
and ebx, eax
mov eax, dword [esp + 0x44]
and esi, ecx
add edi, 4
dec eax
mov dword [esp + 0x44], eax
jne 0x480219
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0x4c]
or ebx, ecx
mov ebx, dword [esp + 0x28]
jne 0x480293
or ebp, 0x800000
mov dword [esp + 0x14], ebp
jmp 0x48029b
cmp byte [ebx + 0x18], 0
je 0x480164
test ebp, 0xc0000
jne 0x480164
or ebp, 0x4000000
mov dword [esp + 0x14], ebp
jmp 0x480164
mov dword [esp + 0x60], 1
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
movsd xmm7, qword [0x4e9ad0]
mov edx, dword [edi + eax*4]
mov eax, edx
imul eax, ecx
movd xmm5, eax
cvtdq2pd xmm5, xmm5
shr eax, 0x1f
cmp dword [esp + 0x5c], 0
addsd xmm5, qword [eax*8 + 0x4efd60]
je 0x480333
mov ecx, dword [edi]
movapd xmm1, xmm5
mov eax, ecx
mulsd xmm1, xmm7
shr eax, 0x1f
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x4efd60]
comisd xmm1, xmm0
jbe 0x48032f
shr ecx, 1
movd xmm1, edx
cvtdq2pd xmm1, xmm1
movd xmm5, ecx
cvtdq2pd xmm5, xmm5
shr ecx, 0x1f
shr edx, 0x1f
addsd xmm1, qword [edx*8 + 0x4efd60]
addsd xmm5, qword [ecx*8 + 0x4efd60]
movaps xmm0, xmm5
divsd xmm0, xmm1
cvttsd2si ecx, xmm0
jmp 0x480333
mov ecx, dword [esp + 0x2c]
divsd xmm5, qword [esp + 0x30]
movsd xmm0, qword [0x4e9ac8]
comisd xmm0, xmm5
jbe 0x48034a
movaps xmm5, xmm0
mov eax, dword [edi]
test ebp, 0x100f3000
jne 0x48036d
shl eax, 2
movd xmm6, eax
cvtdq2pd xmm6, xmm6
shr eax, 0x1f
addsd xmm6, qword [eax*8 + 0x4efd60]
jmp 0x4803b8
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
push ecx
push ecx
addsd xmm0, qword [eax*8 + 0x4efd60]
movsd qword [esp], xmm0
call fcn.004855da
add esp, 8
movd xmm6, ecx
cmp dword [esp + 0x10], 0
fstp qword [esp + 0x30]
cvtdq2pd xmm6, xmm6
je 0x4803ae
cmp dword [esp + 0x60], 0
je 0x4803ae
addsd xmm6, xmm5
mulsd xmm6, qword [esp + 0x30]
addsd xmm6, xmm5
cmp dword [esp + 0x58], 0
je 0x4803eb
push ecx
push ecx
movsd qword [esp], xmm5
call fcn.004855da
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
add esp, 8
mulsd xmm0, xmm5
mulsd xmm0, qword [0x4e9ad8]
addsd xmm0, xmm6
movaps xmm6, xmm0
cmp dword [esp + 0x40], 0
je 0x48041e
push ecx
push ecx
movsd qword [esp], xmm5
call fcn.004855da
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
add esp, 8
mulsd xmm0, xmm5
mulsd xmm0, qword [0x4e9ad8]
addsd xmm0, xmm6
movaps xmm6, xmm0
comisd xmm5, xmm7
jbe 0x4804f3
movsd xmm0, qword [esi + 0x18]
comisd xmm0, xmm6
jb 0x4804f3
mov esi, dword [esp + 0xb8]
push dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
push dword [esi + 4]
call fcn.0048930d
mov edi, dword [esi + 0x20]
mov ebp, dword [esp + 0x40]
add edi, 0x10
mov dword [esp + 0x58], edx
mov edx, dword [esi + 0x18]
mov esi, dword [esp + 0x58]
pop ecx
pop ecx
mov dword [esp + 0x40], eax
test edx, edx
je 0x4804da
test byte [edi + 2], 2
jne 0x4804d0
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
and eax, dword [esp + 0xc8]
and ecx, dword [esp + 0xcc]
cmp eax, dword [esp + 0x40]
jne 0x4804d0
cmp ecx, esi
jne 0x4804d0
movzx eax, word [edi]
test al, 0x83
je 0x4804a9
test ebx, ebx
je 0x48049f
dec ebx
jmp 0x4804d0
divsd xmm5, qword [0x4e9af0]
jmp 0x4804d0
test al, 0x3c
je 0x4804be
test ebp, ebp
je 0x4804b4
dec ebp
jmp 0x4804d0
divsd xmm5, qword [0x4e9ad8]
jmp 0x4804d0
mov ecx, 0x800
cmp ax, cx
je 0x4804d0
mulsd xmm5, qword [0x4efd38]
dec edx
add edi, 0x28
comisd xmm5, xmm7
ja 0x480469
comisd xmm7, xmm5
mov esi, dword [esp + 0xd8]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
jbe 0x4804f3
movapd xmm5, xmm7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4804ff
test ebp, ebp
je 0x48053f
movsd xmm0, qword [esi + 0x18]
comisd xmm0, xmm6
ja 0x480517
jb 0x48053f
movsd xmm0, qword [esi + 8]
comisd xmm0, xmm5
jbe 0x48053f
mov ecx, dword [esp + 0x1c]
and ebp, dword [esp + 0x54]
mov dword [esi + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x24], ecx
mov ecx, dword [esp + 0x18]
movsd qword [esi + 0x18], xmm6
movsd qword [esi + 8], xmm5
mov dword [esi], ebp
mov dword [esi + 4], ecx
mov dword [esi + 0x10], eax
mov edi, dword [esp + 0xbc]
cmp dword [edi + 0x3c], 0
jne 0x480575
mov ebx, dword [ebx + 0x20]
mov ecx, ebx
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x54], 0xffffcfff
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], ecx
test ebx, ebx
jne 0x47ff0d
cmp dword [esp + 0xd0], 0
mov ebp, dword [esp + 0xb4]
jne 0x480598
mov eax, dword [ebp]
test dword [eax + 0xc], 0x1000000
je 0x480598
or dword [esi], 0x2000000
mov ebx, dword [esp + 0xb8]
push esi
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push edi
push ebx
push ebp
call fcn.00480677
push esi
push dword [esp + 0xec]
push dword [esp + 0xec]
push edi
push ebx
push ebp
call fcn.0047fcee
mov eax, dword [esp + 0x78]
add esp, 0x3c
or dword [esi], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret