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

Disassembly:
sub esp, 0xa0
mov eax, dword [esp + 0xac]
movsd xmm0, qword [0x4e8b70]
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 0x47f893
mov ecx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x54], 0xffffcfff
mov dword [esp + 0x3c], eax
jmp 0x47f90a
push 0x30
lea eax, [esp + 0x84]
push 0
push eax
call fcn.004bea90
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 0x47f8f1
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 0x47ff9a
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 [0x4e8aa8]
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 0x47fc93
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.00486c3e
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x47fa5c
movzx ecx, word [edx + 0x10]
or ebp, 0x11000
mov dword [esp + 0x14], ebp
test cl, 1
je 0x47fa20
mov ecx, dword [edx]
or ebp, 0x40000
mov eax, 0x800
mov dword [esp + 0x14], ebp
test word [ecx + 2], ax
je 0x47fa08
imul eax, dword [esp + 0x2c], 0x19
mov dword [esp + 0x5c], 1
mov dword [esp + 0x2c], eax
jmp 0x47fa2e
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x47fa2e
mov eax, dword [eax]
test eax, eax
je 0x47fa2e
imul eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
jmp 0x47fa2e
test cl, cl
jns 0x47fa2e
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 0x47f995
jmp 0x47fa60
mov edx, dword [esp + 0x18]
cmp edx, dword [ebx + 4]
jge 0x47fc93
cmp byte [ebx + 0x1a], 0
jne 0x47fc93
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.00486c3e
add esp, 0x1c
test eax, eax
je 0x47fb7e
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.00486c3e
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.00486c3e
movsd xmm0, qword [0x4e8aa8]
add esp, 0x38
movsd qword [esp + 0x30], xmm0
test eax, eax
je 0x47fb18
movsd xmm0, qword [0x4e8ac0]
movsd qword [esp + 0x30], xmm0
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
test ebx, ebx
je 0x47fb4f
mulsd xmm0, qword [0x4e8ac0]
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 0x47fb53
mov ecx, dword [esp + 0x38]
test eax, eax
je 0x47fb70
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.0048a034
add esp, 0x20
test eax, eax
je 0x47fbd6
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.00489b2d
add esp, 0x18
test eax, eax
je 0x47fc10
and dword [esp + 0x40], 0
or ebp, 0x40022000
mov dword [esp + 0x14], ebp
mov edx, dword [esp + 0x10]
test edx, edx
je 0x47fcc0
test ebp, ebp
je 0x47fcc0
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 0x47fc7f
mov edi, dword [edx + 8]
mov esi, ecx
mov edx, dword [edi]
cmp edx, 0x3f
jge 0x47fc66
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 0x47fc3e
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0x4c]
or ebx, ecx
mov ebx, dword [esp + 0x28]
jne 0x47fcb8
or ebp, 0x800000
mov dword [esp + 0x14], ebp
jmp 0x47fcc0
cmp byte [ebx + 0x18], 0
je 0x47fb89
test ebp, 0xc0000
jne 0x47fb89
or ebp, 0x4000000
mov dword [esp + 0x14], ebp
jmp 0x47fb89
mov dword [esp + 0x60], 1
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
movsd xmm7, qword [0x4e8ab0]
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 + 0x4eed80]
je 0x47fd58
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 + 0x4eed80]
comisd xmm1, xmm0
jbe 0x47fd54
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 + 0x4eed80]
addsd xmm5, qword [ecx*8 + 0x4eed80]
movaps xmm0, xmm5
divsd xmm0, xmm1
cvttsd2si ecx, xmm0
jmp 0x47fd58
mov ecx, dword [esp + 0x2c]
divsd xmm5, qword [esp + 0x30]
movsd xmm0, qword [0x4e8aa8]
comisd xmm0, xmm5
jbe 0x47fd6f
movaps xmm5, xmm0
mov eax, dword [edi]
test ebp, 0x100f3000
jne 0x47fd92
shl eax, 2
movd xmm6, eax
cvtdq2pd xmm6, xmm6
shr eax, 0x1f
addsd xmm6, qword [eax*8 + 0x4eed80]
jmp 0x47fddd
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
push ecx
push ecx
addsd xmm0, qword [eax*8 + 0x4eed80]
movsd qword [esp], xmm0
call fcn.00484fff
add esp, 8
movd xmm6, ecx
cmp dword [esp + 0x10], 0
fstp qword [esp + 0x30]
cvtdq2pd xmm6, xmm6
je 0x47fdd3
cmp dword [esp + 0x60], 0
je 0x47fdd3
addsd xmm6, xmm5
mulsd xmm6, qword [esp + 0x30]
addsd xmm6, xmm5
cmp dword [esp + 0x58], 0
je 0x47fe10
push ecx
push ecx
movsd qword [esp], xmm5
call fcn.00484fff
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
add esp, 8
mulsd xmm0, xmm5
mulsd xmm0, qword [0x4e8ab8]
addsd xmm0, xmm6
movaps xmm6, xmm0
cmp dword [esp + 0x40], 0
je 0x47fe43
push ecx
push ecx
movsd qword [esp], xmm5
call fcn.00484fff
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
add esp, 8
mulsd xmm0, xmm5
mulsd xmm0, qword [0x4e8ab8]
addsd xmm0, xmm6
movaps xmm6, xmm0
comisd xmm5, xmm7
jbe 0x47ff18
movsd xmm0, qword [esi + 0x18]
comisd xmm0, xmm6
jb 0x47ff18
mov esi, dword [esp + 0xb8]
push dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
push dword [esi + 4]
call fcn.00488d32
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 0x47feff
test byte [edi + 2], 2
jne 0x47fef5
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 0x47fef5
cmp ecx, esi
jne 0x47fef5
movzx eax, word [edi]
test al, 0x83
je 0x47fece
test ebx, ebx
je 0x47fec4
dec ebx
jmp 0x47fef5
divsd xmm5, qword [0x4e8ad0]
jmp 0x47fef5
test al, 0x3c
je 0x47fee3
test ebp, ebp
je 0x47fed9
dec ebp
jmp 0x47fef5
divsd xmm5, qword [0x4e8ab8]
jmp 0x47fef5
mov ecx, 0x800
cmp ax, cx
je 0x47fef5
mulsd xmm5, qword [0x4eed58]
dec edx
add edi, 0x28
comisd xmm5, xmm7
ja 0x47fe8e
comisd xmm7, xmm5
mov esi, dword [esp + 0xd8]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
jbe 0x47ff18
movapd xmm5, xmm7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x47ff24
test ebp, ebp
je 0x47ff64
movsd xmm0, qword [esi + 0x18]
comisd xmm0, xmm6
ja 0x47ff3c
jb 0x47ff64
movsd xmm0, qword [esi + 8]
comisd xmm0, xmm5
jbe 0x47ff64
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 0x47ff9a
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 0x47f932
cmp dword [esp + 0xd0], 0
mov ebp, dword [esp + 0xb4]
jne 0x47ffbd
mov eax, dword [ebp]
test dword [eax + 0xc], 0x1000000
je 0x47ffbd
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.0048009c
push esi
push dword [esp + 0xec]
push dword [esp + 0xec]
push edi
push ebx
push ebp
call fcn.0047f713
mov eax, dword [esp + 0x78]
add esp, 0x3c
or dword [esi], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret