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

Disassembly:
sub esp, 0xa0
mov eax, dword [esp + 0xac]
movsd xmm0, qword [0x4e2f08]
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 0x4799e1
mov ecx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x54], 0xffffcfff
mov dword [esp + 0x3c], eax
jmp 0x479a58
push 0x30
lea eax, [esp + 0x84]
push 0
push eax
call fcn.004b6030
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 0x479a3f
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 0x47a0e8
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 [0x4e2e40]
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 0x479de1
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.00480d8f
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x479baa
movzx ecx, word [edx + 0x10]
or ebp, 0x11000
mov dword [esp + 0x14], ebp
test cl, 1
je 0x479b6e
mov ecx, dword [edx]
or ebp, 0x40000
mov eax, 0x800
mov dword [esp + 0x14], ebp
test word [ecx + 2], ax
je 0x479b56
imul eax, dword [esp + 0x2c], 0x19
mov dword [esp + 0x5c], 1
mov dword [esp + 0x2c], eax
jmp 0x479b7c
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x479b7c
mov eax, dword [eax]
test eax, eax
je 0x479b7c
imul eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
jmp 0x479b7c
test cl, cl
jns 0x479b7c
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 0x479ae3
jmp 0x479bae
mov edx, dword [esp + 0x18]
cmp edx, dword [ebx + 4]
jge 0x479de1
cmp byte [ebx + 0x1a], 0
jne 0x479de1
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.00480d8f
add esp, 0x1c
test eax, eax
je 0x479ccc
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.00480d8f
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.00480d8f
movsd xmm0, qword [0x4e2e40]
add esp, 0x38
movsd qword [esp + 0x30], xmm0
test eax, eax
je 0x479c66
movsd xmm0, qword [0x4e2e58]
movsd qword [esp + 0x30], xmm0
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
test ebx, ebx
je 0x479c9d
mulsd xmm0, qword [0x4e2e58]
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 0x479ca1
mov ecx, dword [esp + 0x38]
test eax, eax
je 0x479cbe
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.00484185
add esp, 0x20
test eax, eax
je 0x479d24
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.00483c7e
add esp, 0x18
test eax, eax
je 0x479d5e
and dword [esp + 0x40], 0
or ebp, 0x40022000
mov dword [esp + 0x14], ebp
mov edx, dword [esp + 0x10]
test edx, edx
je 0x479e0e
test ebp, ebp
je 0x479e0e
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 0x479dcd
mov edi, dword [edx + 8]
mov esi, ecx
mov edx, dword [edi]
cmp edx, 0x3f
jge 0x479db4
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 0x479d8c
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0xd8]
mov ecx, dword [esp + 0x4c]
or ebx, ecx
mov ebx, dword [esp + 0x28]
jne 0x479e06
or ebp, 0x800000
mov dword [esp + 0x14], ebp
jmp 0x479e0e
cmp byte [ebx + 0x18], 0
je 0x479cd7
test ebp, 0xc0000
jne 0x479cd7
or ebp, 0x4000000
mov dword [esp + 0x14], ebp
jmp 0x479cd7
mov dword [esp + 0x60], 1
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
movsd xmm7, qword [0x4e2e48]
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 + 0x4e8d60]
je 0x479ea6
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 + 0x4e8d60]
comisd xmm1, xmm0
jbe 0x479ea2
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 + 0x4e8d60]
addsd xmm5, qword [ecx*8 + 0x4e8d60]
movaps xmm0, xmm5
divsd xmm0, xmm1
cvttsd2si ecx, xmm0
jmp 0x479ea6
mov ecx, dword [esp + 0x2c]
divsd xmm5, qword [esp + 0x30]
movsd xmm0, qword [0x4e2e40]
comisd xmm0, xmm5
jbe 0x479ebd
movaps xmm5, xmm0
mov eax, dword [edi]
test ebp, 0x100f3000
jne 0x479ee0
shl eax, 2
movd xmm6, eax
cvtdq2pd xmm6, xmm6
shr eax, 0x1f
addsd xmm6, qword [eax*8 + 0x4e8d60]
jmp 0x479f2b
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
push ecx
push ecx
addsd xmm0, qword [eax*8 + 0x4e8d60]
movsd qword [esp], xmm0
call fcn.0047f14d
add esp, 8
movd xmm6, ecx
cmp dword [esp + 0x10], 0
fstp qword [esp + 0x30]
cvtdq2pd xmm6, xmm6
je 0x479f21
cmp dword [esp + 0x60], 0
je 0x479f21
addsd xmm6, xmm5
mulsd xmm6, qword [esp + 0x30]
addsd xmm6, xmm5
cmp dword [esp + 0x58], 0
je 0x479f5e
push ecx
push ecx
movsd qword [esp], xmm5
call fcn.0047f14d
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
add esp, 8
mulsd xmm0, xmm5
mulsd xmm0, qword [0x4e2e50]
addsd xmm0, xmm6
movaps xmm6, xmm0
cmp dword [esp + 0x40], 0
je 0x479f91
push ecx
push ecx
movsd qword [esp], xmm5
call fcn.0047f14d
fstp qword [esp + 0x38]
movsd xmm0, qword [esp + 0x38]
add esp, 8
mulsd xmm0, xmm5
mulsd xmm0, qword [0x4e2e50]
addsd xmm0, xmm6
movaps xmm6, xmm0
comisd xmm5, xmm7
jbe 0x47a066
movsd xmm0, qword [esi + 0x18]
comisd xmm0, xmm6
jb 0x47a066
mov esi, dword [esp + 0xb8]
push dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
push dword [esi + 4]
call fcn.00482e83
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 0x47a04d
test byte [edi + 2], 2
jne 0x47a043
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 0x47a043
cmp ecx, esi
jne 0x47a043
movzx eax, word [edi]
test al, 0x83
je 0x47a01c
test ebx, ebx
je 0x47a012
dec ebx
jmp 0x47a043
divsd xmm5, qword [0x4e2e68]
jmp 0x47a043
test al, 0x3c
je 0x47a031
test ebp, ebp
je 0x47a027
dec ebp
jmp 0x47a043
divsd xmm5, qword [0x4e2e50]
jmp 0x47a043
mov ecx, 0x800
cmp ax, cx
je 0x47a043
mulsd xmm5, qword [0x4e8d38]
dec edx
add edi, 0x28
comisd xmm5, xmm7
ja 0x479fdc
comisd xmm7, xmm5
mov esi, dword [esp + 0xd8]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
jbe 0x47a066
movapd xmm5, xmm7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x47a072
test ebp, ebp
je 0x47a0b2
movsd xmm0, qword [esi + 0x18]
comisd xmm0, xmm6
ja 0x47a08a
jb 0x47a0b2
movsd xmm0, qword [esi + 8]
comisd xmm0, xmm5
jbe 0x47a0b2
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 0x47a0e8
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 0x479a80
cmp dword [esp + 0xd0], 0
mov ebp, dword [esp + 0xb4]
jne 0x47a10b
mov eax, dword [ebp]
test dword [eax + 0xc], 0x1000000
je 0x47a10b
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.0047a1ea
push esi
push dword [esp + 0xec]
push dword [esp + 0xec]
push edi
push ebx
push ebp
call fcn.00479861
mov eax, dword [esp + 0x78]
add esp, 0x3c
or dword [esi], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret