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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
mov eax, dword [0x100600f0]
xor eax, esp
mov dword [esp + 0xc4], eax
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 8], esi
dec dword [esi + 0x21c]
cmp dword [esi + 0x21c], 0
mov dword [esp + 0x2c], edi
jg 0x10004237
mov eax, dword [esi + 0x218]
xorps xmm0, xmm0
mov dword [esi + 0x21c], eax
movsd qword [esi + 0x130], xmm0
movsd qword [esi + 0x140], xmm0
mov ecx, dword [esi + 0x7c]
sub esp, 0x1c
mov edx, dword [esi + 0x78]
mov dword [esp + 0x4c], edx
lea eax, [ecx + 8]
mov dword [esp + 0x50], eax
lea eax, [edx + 0x1a]
mov dword [esp + 0x54], eax
lea eax, [ecx + 0x14]
mov dword [esp + 0x58], eax
lea eax, [esi + 0x178]
push eax
mov dword [esp + 0x6c], eax
sub esp, 8
mov eax, dword [esi + 0x84]
sub eax, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x10052450]
movsd qword [esp + 0x38], xmm0
fld qword [esp + 0x38]
fstp qword [esp]
call fcn.10044f60
add esp, 8
call fcn.10030050
push eax
lea ecx, [esp + 0x84]
call fcn.10003900
push 0
lea eax, [esp + 0x34]
mov ecx, edi
push eax
push 0x100510d0
lea eax, [esp + 0x6c]
push eax
call fcn.100084c0
mov edx, dword [esi + 0x7c]
mov eax, dword [esi + 0x84]
sub eax, edx
mov ecx, dword [esi + 0x78]
push 0
mov dword [esp + 0x14], ecx
movd xmm1, eax
lea eax, [edx + 8]
cvtdq2pd xmm1, xmm1
movd xmm0, eax
mulsd xmm1, qword [0x10052460]
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [esp + 0x18], eax
lea eax, [ecx + 0x1a]
mov dword [esp + 0x1c], eax
mov ecx, edi
mov eax, dword [esi + 0x84]
sub eax, edx
movd xmm1, eax
lea eax, [edx + 0x14]
cvtdq2pd xmm1, xmm1
movd xmm0, eax
mulsd xmm1, qword [0x10052460]
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [esp + 0x20], eax
lea eax, [esp + 0x34]
movdqa xmm0, xmmword [esp + 0x14]
push eax
push 0x100510d4
lea eax, [esp + 0x6c]
movdqa xmmword [esp + 0x3c], xmm0
push eax
call fcn.100084c0
mov edi, dword [esi + 0x80]
sub edi, dword [esi + 0x78]
movsd xmm0, qword [0x10052478]
mov dword [esp + 0x54], edi
call fcn.10043df0
mulsd xmm0, qword [0x10052490]
movsd qword [esp + 0x30], xmm0
movsd xmm0, qword [esi + 0xf0]
andpd xmm0, xmmword [0x100526c0]
call fcn.10043df0
mulsd xmm0, qword [0x100524a8]
cvtsd2ss xmm0, xmm0
cvtss2sd xmm0, xmm0
mulsd xmm0, qword [esp + 0x30]
call fcn.10043b20
mov eax, dword [esi + 0x80]
lea ecx, [esp + 0x5c]
sub eax, dword [esi + 0x78]
lea esi, [esp + 0x54]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, qword [0x10052480]
cvtpd2ps xmm1, xmm1
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
cmp edi, eax
mov dword [esp + 0x5c], eax
cmovge esi, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0x80]
sub eax, dword [ecx + 0x78]
movsd xmm0, qword [ecx + 0xf8]
andpd xmm0, xmmword [0x100526c0]
mov dword [esp + 0xc], eax
mov dword [esp + 0x50], eax
call fcn.10043df0
mulsd xmm0, qword [0x100524a8]
cvtsd2ss xmm0, xmm0
cvtss2sd xmm0, xmm0
mulsd xmm0, qword [esp + 0x30]
call fcn.10043b20
mov ecx, dword [esp + 8]
lea edx, [esp + 0x58]
lea edi, [esp + 0x50]
push 0x10000
push ecx
mov eax, dword [ecx + 0x80]
sub eax, dword [ecx + 0x78]
mov dword [esp], 0x3f800000
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, qword [0x10052480]
cvtpd2ps xmm1, xmm1
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm1
movd xmm1, dword [esi]
lea esi, [ecx + 0x178]
cvtdq2pd xmm1, xmm1
cvttsd2si eax, xmm0
movd xmm0, dword [ecx + 0x78]
cmp dword [esp + 0x14], eax
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x60], eax
cmovge edi, edx
addsd xmm0, xmm1
cvttsd2si eax, xmm0
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 0x84]
sub eax, dword [ecx + 0x7c]
movzx ecx, byte [esi + 4]
cdq
sub eax, edx
mov edx, eax
mov eax, dword [esi]
shl eax, 8
or ecx, eax
sar edx, 1
movzx eax, byte [esi + 8]
dec edx
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0xc]
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [eax + 0x7c]
mov esi, dword [esp + 0x14]
sub edx, ecx
mov eax, dword [esp + 0x18]
push edx
mov edx, dword [esi + 0x78]
sub eax, edx
mov esi, dword [esp + 0x3c]
push eax
push ecx
mov ecx, dword [esi + 0x4c]
call fcn.10010140
mov ecx, dword [esp + 0x20]
add esp, 0x18
movd xmm1, dword [edi]
cvtdq2pd xmm1, xmm1
mov eax, dword [ecx + 0x78]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 0x84]
sub eax, dword [ecx + 0x7c]
mov ecx, dword [ecx + 0x7c]
cdq
inc ecx
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0xc], eax
push 0x10000
push ecx
mov edx, dword [ecx + 0x84]
lea eax, [ecx + 0x178]
sub edx, dword [ecx + 0x7c]
movd xmm0, dword [ecx + 0x78]
dec edx
movzx ecx, byte [eax + 4]
mov eax, dword [eax]
shl eax, 8
or ecx, eax
mov dword [esp], 0x3f800000
mov eax, dword [esp + 0x54]
shl ecx, 8
cvtdq2pd xmm0, xmm0
movzx eax, byte [eax + 8]
or ecx, eax
mov eax, dword [esp + 0x54]
shl ecx, 8
movzx eax, byte [eax + 0xc]
addsd xmm0, xmm1
or ecx, eax
push ecx
mov ecx, dword [esp + 0x18]
sub edx, ecx
push edx
mov edx, dword [esp + 0x40]
cvttsd2si eax, xmm0
sub eax, edx
push eax
push ecx
mov ecx, dword [esi + 0x4c]
call fcn.10010140
mov esi, dword [esp + 0x28]
add esp, 0x18
mov ecx, dword [esp + 8]
movd xmm0, dword [esi]
cvtdq2pd xmm0, xmm0
comisd xmm0, xmmword [ecx + 0x130]
jbe 0x100045b0
movsd qword [ecx + 0x130], xmm0
movd xmm0, dword [edi]
cvtdq2pd xmm0, xmm0
comisd xmm0, xmmword [ecx + 0x140]
jbe 0x100045ca
movsd qword [ecx + 0x140], xmm0
movsd xmm1, qword [ecx + 0x130]
movdqu xmm2, xmmword [ecx + 0x178]
push 0x10000
movaps xmm0, xmm1
subsd xmm0, qword [0x10052488]
cvttsd2si edi, xmm1
cvttsd2si eax, xmm0
movdqa xmm0, xmm2
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 0x84]
sub eax, dword [ecx + 0x7c]
cdq
sub eax, edx
psrldq xmm0, 4
movd ecx, xmm0
mov esi, eax
mov edx, dword [esp + 0x14]
movdqa xmm0, xmm2
psrldq xmm0, 8
sub edi, edx
movzx ecx, cl
or ecx, 0xffff9600
movd eax, xmm0
shl ecx, 8
psrldq xmm2, 0xc
movzx eax, al
or ecx, eax
sar esi, 1
movd eax, xmm2
dec esi
shl ecx, 8
movzx eax, al
or ecx, eax
push ecx
mov dword [esp], 0x3f800000
push ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x7c]
sub esi, eax
mov ecx, dword [esp + 0x38]
push esi
push edi
push eax
mov ecx, dword [ecx + 0x4c]
call fcn.10010140
mov ecx, dword [esp + 0x20]
add esp, 0x18
movsd xmm1, qword [ecx + 0x140]
mov eax, dword [ecx + 0x84]
movapd xmm0, xmm1
sub eax, dword [ecx + 0x7c]
mov esi, dword [ecx + 0x7c]
subsd xmm0, qword [0x10052488]
cdq
inc esi
sub eax, edx
mov edx, dword [esp + 8]
cvttsd2si ecx, xmm1
sar eax, 1
add esi, eax
mov eax, dword [edx + 0x84]
sub eax, dword [edx + 0x7c]
push 0x10000
dec eax
cvttsd2si edi, xmm0
push ecx
mov dword [esp], 0x3f800000
sub eax, esi
push dword [esp + 0x38]
sub ecx, edi
mov edx, edi
mov edi, dword [esp + 0x38]
push eax
push ecx
push esi
mov ecx, dword [edi + 0x4c]
call fcn.10010140
mov esi, dword [esp + 0x20]
add esp, 0x18
push edi
mov ecx, esi
call fcn.10004780
movdqu xmm0, xmmword [esi + 0x78]
mov al, byte [esi + 0x110]
movdqu xmmword [esp + 0x10], xmm0
cmp al, 1
je 0x1000470a
cmp dword [esi + 0x220], 0
jle 0x10004754
cmp al, 1
jne 0x10004713
mov eax, dword [edi + 0x5c]
mov dword [esi + 0x220], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
push 0x10000
push ecx
mov ecx, dword [esp + 0x1c]
sub eax, ecx
mov dword [esp], 0x3f800000
push 0x96ff0000
push eax
mov eax, dword [esp + 0x28]
sub eax, edx
push eax
push ecx
mov ecx, dword [edi + 0x4c]
call fcn.10010140
add esp, 0x18
mov byte [esi + 0x110], 0
dec dword [esi + 0x220]
mov ecx, dword [esp + 0xcc]
xorps xmm0, xmm0
pop edi
movups xmmword [esi + 0xf0], xmm0
pop esi
xor ecx, esp
mov al, 1
call fcn.1002bfb5
mov esp, ebp
pop ebp
ret 4