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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x88
mov eax, dword [0x4490b4]
xor eax, esp
mov dword [esp + 0x84], eax
cmp byte [ebp + 0x18], 2
xorps xmm0, xmm0
movsd xmm1, qword [ebp + 8]
push esi
sete al
movsd qword [esp + 0x4c], xmm1
comisd xmm0, xmm1
push edi
mov edi, dword [ebp + 0x1c]
mov dword [esp + 0x74], edi
mov byte [esp + 0x12], al
jb 0x407bc1
mov esi, dword [ebp + 0x10]
test esi, esi
jle 0x407b8c
test al, al
je 0x407b8c
mov eax, dword [edi + 0xc]
cmp esi, eax
jbe 0x407b60
mov eax, dword [edi]
mov ecx, edi
push esi
call dword [eax]
mov eax, dword [edi + 0xc]
cmp esi, eax
push esi
push 0x30
push dword [edi + 4]
cmovbe eax, esi
mov dword [edi + 8], eax
call fcn.00419980
add esp, 0xc
neg esi
mov eax, esi
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004183d1
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 8]
lea edx, [ecx + 1]
cmp edx, dword [edi + 0xc]
jbe 0x407ba1
mov eax, dword [edi]
mov ecx, edi
push edx
call dword [eax]
mov ecx, dword [edi + 8]
mov eax, dword [edi + 4]
mov byte [ecx + eax], 0x30
inc dword [edi + 8]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004183d1
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x10], 0
mov dword [esp + 0x14], 0
jge 0x407c71
test byte [ebp + 0x1a], 4
je 0x407c12
cvtpd2ps xmm0, xmm1
push ecx
movss dword [esp], xmm0
call fcn.004325f0
add esp, 4
mov esi, edx
push eax
lea eax, [esp + 0x20]
push edi
push eax
call fcn.0040a190
add esp, 0xc
mov eax, esi
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004183d1
mov esp, ebp
pop ebp
ret
sub esp, 8
lea eax, [esp + 0x28]
movsd qword [esp], xmm1
push eax
call fcn.00432890
add esp, 0xc
movups xmm1, xmmword [eax]
movaps xmm0, xmm1
movaps xmmword [esp + 0x20], xmm1
psrldq xmm0, 4
movd eax, xmm0
push eax
movd eax, xmm1
push eax
lea eax, [esp + 0x24]
push edi
push eax
call fcn.0040a250
movaps xmm0, xmmword [esp + 0x30]
add esp, 0x10
psrldq xmm0, 8
movd eax, xmm0
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004183d1
mov esp, ebp
pop ebp
ret
lea ecx, [esp + 0x20]
call fcn.0040a130
movups xmm0, xmmword [eax]
xor eax, eax
movaps xmmword [esp + 0x20], xmm0
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
psrldq xmm0, 4
movd edx, xmm0
mov ecx, edx
and ecx, 0x100000
or eax, ecx
jne 0x407cb6
shld edx, esi, 1
xor eax, eax
dec edi
mov ecx, edx
add esi, esi
and ecx, 0x100000
or eax, ecx
je 0x407ca1
shld edx, esi, 0xb
sub edi, 0xb
mov eax, 0xffffffc3
sub eax, edi
mov dword [esp + 0x4c], edx
mov ecx, 0x4d104d42
shl esi, 0xb
imul ecx
push 0
add eax, 0xffffffff
mov dword [esp + 0x6c], edi
push esi
adc edx, 0
mov dword [esp + 0x60], esi
push 0
lea eax, [edx + 0x15b]
cdq
and edx, 7
add eax, edx
sar eax, 3
inc eax
mov dword [esp + 0x24], eax
push dword [eax*8 + 0x445234]
mov edi, dword [eax*8 + 0x445230]
lea ecx, [eax*8 - 0x15c]
mov dword [esp + 0x2c], ecx
call fcn.00434510
push 0
push dword [esp + 0x50]
mov dword [esp + 0x64], eax
push 0
push edi
mov dword [esp + 0x74], edx
call fcn.00434510
push 0
push dword [esp + 0x5c]
mov esi, eax
mov dword [esp + 0x68], edx
push 0
push edi
call fcn.00434510
mov eax, dword [esp + 0x18]
xor edi, edi
add edx, esi
adc edi, edi
add edx, dword [esp + 0x5c]
adc edi, 0
add edx, 0x80000000
adc edi, 0
xor esi, esi
push esi
push dword [esp + 0x50]
push esi
push dword [eax*8 + 0x445234]
call fcn.00434510
mov ecx, dword [esp + 0x68]
add edi, eax
mov eax, dword [esp + 0x18]
adc esi, edx
mov dword [esp + 0x7c], 0
add edi, dword [esp + 0x60]
movsx eax, word [eax*2 + 0x445180]
adc esi, 0
add edi, dword [esp + 0x64]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x1c]
adc esi, 0
mov dword [esp + 0x24], esi
add ecx, 0x40
mov esi, dword [esp + 0x74]
add eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x78], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x80], eax
mov eax, edi
neg eax
mov dword [esp + 0x84], eax
mov al, byte [esp + 0x12]
mov byte [esp + 0x88], al
movups xmm0, xmmword [esp + 0x20]
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0x18]
push eax
push 0
push 1
sub esp, 0x10
mov eax, esp
movups xmmword [eax], xmm0
call fcn.00401670
add esp, 0x20
cmp eax, 2
je 0x407e36
mov ecx, dword [esp + 0x14]
add ecx, dword [esp + 0x84]
mov eax, dword [esi + 0xc]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x14], ecx
cmp edi, eax
jbe 0x407e2b
mov eax, dword [esi]
mov ecx, esi
push edi
call dword [eax]
mov eax, dword [esi + 0xc]
cmp edi, eax
mov ecx, dword [esp + 0x14]
cmova edi, eax
mov dword [esi + 8], edi
jmp 0x407f80
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x7c]
dec eax
movsd xmm0, qword [esp + 0x50]
sub ecx, edi
add eax, ecx
test byte [ebp + 0x1a], 4
mov dword [esp + 0x14], eax
je 0x407ec4
cvtpd2ps xmm0, xmm0
xor edi, edi
mov dword [esp + 0x24], edi
movss dword [esp + 0x1c], xmm0
xorps xmm0, xmm0
mov eax, dword [esp + 0x1c]
mov ecx, eax
shr eax, 0x17
and ecx, 0x7fffff
movzx edx, al
mov eax, ecx
or eax, edi
mov dword [esp + 0x20], ecx
movlpd qword [esp + 0x28], xmm0
mov dword [esp + 0x18], edx
jne 0x407eae
cmp edx, 1
jbe 0x407eae
mov eax, dword [esp + 0x18]
mov dl, 1
add ecx, 0x800000
mov dword [esp + 0x20], ecx
adc edi, edi
add eax, 0xffffff6a
mov dword [esp + 0x24], edi
jmp 0x407f27
mov eax, dword [esp + 0x18]
xor dl, dl
test eax, eax
jne 0x407e97
mov eax, 1
add eax, 0xffffff6a
jmp 0x407f27
movsd qword [esp + 0x50], xmm0
xorps xmm0, xmm0
mov ecx, dword [esp + 0x54]
mov edx, ecx
mov edi, dword [esp + 0x50]
and edx, 0xfffff
shr ecx, 0x14
mov eax, edi
and ecx, 0x7ff
mov dword [esp + 0x20], edi
or eax, edx
mov dword [esp + 0x24], edx
movlpd qword [esp + 0x28], xmm0
jne 0x407fe3
cmp ecx, 1
jbe 0x407fe3
mov byte [esp + 0x13], 1
add edi, 0
mov dword [esp + 0x20], edi
adc edx, 0x100000
mov dword [esp + 0x24], edx
mov dl, byte [esp + 0x13]
lea eax, [ecx - 0x433]
mov dword [esp + 0x30], eax
xor eax, eax
test dl, dl
mov edx, 0x2ff
movups xmm0, xmmword [esp + 0x20]
setne al
mov ecx, eax
or ecx, 4
cmp byte [esp + 0x12], 0
cmove ecx, eax
mov eax, dword [esp + 0x80]
cmp eax, edx
cmovg eax, edx
lea edx, [esp + 0x14]
push edx
push esi
push eax
push ecx
sub esp, 0x18
mov eax, esp
movups xmmword [eax], xmm0
movq xmm0, qword [esp + 0x58]
movq qword [eax + 0x10], xmm0
call fcn.00402620
mov ecx, dword [esp + 0x3c]
add esp, 0x28
mov dword [esp + 0x14], ecx
cmp byte [esp + 0x12], 0
jne 0x407fcd
test byte [ebp + 0x1a], 8
jne 0x407fcd
mov edi, dword [esi + 8]
test edi, edi
je 0x407fb0
mov eax, dword [esi + 4]
dec eax
add eax, edi
nop word [eax + eax]
cmp byte [eax], 0x30
jne 0x407fac
dec eax
inc ecx
sub edi, 1
jne 0x407fa0
mov dword [esp + 0x14], ecx
mov eax, dword [esi + 0xc]
cmp edi, eax
jbe 0x407fc7
mov eax, dword [esi]
mov ecx, esi
push edi
call dword [eax]
mov eax, dword [esi + 0xc]
cmp edi, eax
mov ecx, dword [esp + 0x14]
cmova edi, eax
mov dword [esi + 8], edi
mov eax, ecx
mov ecx, dword [esp + 0x8c]
pop edi
pop esi
xor ecx, esp
call fcn.004183d1
mov esp, ebp
pop ebp
ret
xor al, al
mov byte [esp + 0x13], al
test ecx, ecx
jne 0x407f0c
mov ecx, 1
xor dl, dl
jmp 0x407f21