Function at 0x10043460
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xb68
mov eax, dword [0x100d4710]
xor eax, esp
mov dword [esp + 0xb64], eax
mov eax, dword fs:[0x2c]
push esi
push edi
mov edi, ecx
mov ecx, dword [0x1012eb0c]
mov dword [esp + 0x28], edi
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100d6b84]
mov esi, dword [edi + 0x44]
cmp eax, dword [ecx + 4]
jg 0x100451d9
mov eax, dword [0x100d6b80]
mov esi, dword [eax + esi]
mov dword [esp + 0x24], esi
test esi, esi
je 0x1004519b
mov ecx, dword [edi + 0x44]
call fcn.10023cb0
fstp dword [esp + 0x44]
movss xmm0, dword [esp + 0x44]
ucomiss xmm0, dword [edi + 0x15d0]
lahf
test ah, 0x44
jnp 0x10043568
push 0x1070
lea esi, [edi + 0x49]
push 0
push esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, esi
call fcn.10051050
mov eax, dword fs:[0x2c]
mov ecx, dword [0x1012eb0c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1012e538]
cmp eax, dword [ecx + 4]
jg 0x1004521e
mov eax, dword [0x1012e534]
mov esi, dword [esp + 0x24]
test eax, eax
je 0x10043527
mov ecx, esi
call eax
mov ecx, dword [edi + 0x44]
call fcn.10023cb0
fstp dword [edi + 0x15d0]
mov ecx, dword [edi + 0x15a4]
mov eax, dword [edi + 0x15a0]
mov dword [esp + 0x18], ecx
cmp eax, ecx
je 0x10043568
mov edi, eax
nop dword [eax + eax]
push esi
mov ecx, edi
call fcn.10042a70
add edi, 0x344
cmp edi, dword [esp + 0x18]
jne 0x10043550
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0xf0]
call fcn.10051cc0
lea ecx, [esp + 0xfc]
call fcn.10051cc0
lea ecx, [esp + 0x108]
call fcn.10051cc0
lea ecx, [esp + 0x114]
call fcn.10051cc0
push 0x3a8
lea eax, [esp + 0x134]
mov dword [esp + 0x124], 0
push 0
push eax
mov dword [esp + 0x130], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x138], 0
call sub.VCRUNTIME140.dll_memset
mov eax, dword [0x100d5448]
add esp, 0xc
mov ecx, dword [edi + 0x44]
mov eax, dword [eax + 0x2c]
movss xmm0, dword [eax + ecx]
movss xmm1, dword [eax + ecx + 4]
movss xmm2, dword [eax + ecx + 8]
movss dword [esp + 0xf0], xmm0
movss dword [esp + 0xf4], xmm1
movss dword [esp + 0xf8], xmm2
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
mov edi, dword [edi + 0x44]
mov edx, dword [0x100d5448]
mov ecx, dword [0x1012eb0c]
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss dword [esp + 0xfc], xmm0
movss dword [esp + 0x100], xmm1
movss dword [esp + 0x104], xmm2
mov eax, dword [edx + 0xb0]
movss xmm0, dword [eax + edi]
movss xmm1, dword [eax + edi + 4]
movss xmm2, dword [eax + edi + 8]
movss dword [esp + 0x108], xmm0
movss dword [esp + 0x10c], xmm1
movss dword [esp + 0x110], xmm2
movss xmm0, dword [edi + 0x94]
movss xmm1, dword [edi + 0x98]
movss xmm2, dword [edi + 0x9c]
movss dword [esp + 0x114], xmm0
movss dword [esp + 0x118], xmm1
movss dword [esp + 0x11c], xmm2
mov eax, dword [edx + 0x7c]
mov eax, dword [edi + eax]
mov dword [esp + 0x120], eax
mov eax, dword [edi + 0xe8]
mov dword [esp + 0x124], eax
mov eax, dword [edx + 0xcc]
movss xmm0, dword [edi + eax]
movss dword [esp + 0x128], xmm0
mov eax, dword [edx + 0x58]
movss xmm0, dword [edi + eax]
mov eax, dword fs:[0x2c]
movss dword [esp + 0x12c], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100d6b7c]
cmp eax, dword [ecx + 4]
jg 0x10045260
jmp 0x10043717
mov edx, dword [0x100d5448]
mov esi, dword [0x100d6b78]
mov ecx, 0xd2
mov esi, dword [edi + esi]
lea edi, [esp + 0x130]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [edx + 0xe8]
mov edi, 1
mov esi, dword [esp + 0x28]
add eax, dword [esi + 0x44]
cmp dword [esi + 0x10], 2
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x478], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0x488], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esp + 0x498], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esp + 0x4a8], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [esp + 0x4b8], xmm0
movups xmm0, xmmword [eax + 0x50]
mov al, byte [esi + 0x48]
mov byte [esp + 0x17], al
movups xmmword [esp + 0x4c8], xmm0
jb 0x100438d3
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
inc edx
mov eax, edx
dec ecx
shr eax, 1
and edx, edi
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax + edx*8]
test ecx, ecx
je 0x100438d3
cmp byte [ecx + 0x1c], 0
jne 0x100438d3
mov eax, dword [ebp + 8]
sub esp, 0xc
movss xmm0, dword [eax + 0x38c]
subss xmm0, dword [ecx + 0x38c]
movss dword [esp + 8], xmm0
movss xmm0, dword [eax + 0x388]
subss xmm0, dword [ecx + 0x388]
movss dword [esp + 4], xmm0
movss xmm0, dword [eax + 0x384]
subss xmm0, dword [ecx + 0x384]
lea ecx, [esp + 0x54]
movss dword [esp], xmm0
call fcn.10051c90
movss xmm0, dword [esp + 0x50]
lea ecx, [esp + 0x58]
sub esp, 0xc
movss dword [esp + 8], xmm0
movss xmm0, dword [esp + 0x58]
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x54]
movss dword [esp], xmm0
call fcn.10051c90
mov eax, dword [ebp + 8]
mov ecx, edi
mov eax, dword [eax + 0x14]
test eax, eax
cmovne ecx, eax
push ecx
mov ecx, 0x100d5440
call fcn.10024130
lea ecx, [esp + 0x64]
fstp dword [esp + 0x44]
call fcn.10051cc0
movss xmm3, dword [esp + 0x58]
lea ecx, [esp + 0x64]
movss xmm2, dword [esp + 0x5c]
movss xmm1, dword [esp + 0x60]
movss xmm0, dword [esp + 0x44]
mov eax, dword [ebp + 8]
divss xmm3, xmm0
divss xmm2, xmm0
divss xmm1, xmm0
movss dword [esp + 0x64], xmm3
movss dword [esp + 0x68], xmm2
movss dword [esp + 0x6c], xmm1
movss dword [eax + 0x3b4], xmm3
movss dword [eax + 0x3b8], xmm2
movss dword [eax + 0x3bc], xmm1
call fcn.1001b690
lea ecx, [esp + 0x58]
call fcn.1001b690
lea ecx, [esp + 0x48]
call fcn.1001b690
mov eax, dword [ebp + 8]
lea ecx, [esp + 0xa0]
movss xmm0, dword [eax + 0x3b4]
movss xmm1, dword [eax + 0x3b8]
movss xmm2, dword [eax + 0x3bc]
movss dword [eax + 0x3cc], xmm0
movss dword [eax + 0x3d0], xmm1
movss dword [eax + 0x3d4], xmm2
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
call fcn.10051cc0
xor eax, eax
mov dword [esp + 0xac], 0
lea ecx, [esp + 0xd4]
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov byte [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], eax
mov byte [esp + 0xd0], al
call fcn.10051cc0
lea ecx, [esp + 0xe0]
call fcn.10051cc0
lea ecx, [esp + 0x7c]
call fcn.10051cc0
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x14]
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jle 0x10043fd8
cmp byte [esp + 0x17], 0
jne 0x10043fd8
movss xmm1, dword [edi + 0x3b4]
movss xmm2, dword [edi + 0x3b8]
movss xmm0, dword [edi + 0x3bc]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
addss xmm2, xmm0
ucomiss xmm2, dword [0x100555bc]
lahf
test ah, 0x44
jnp 0x10043a7c
cvtps2pd xmm0, xmm2
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x10043a46
sqrtsd xmm0, xmm0
jmp 0x10043a4b
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
comiss xmm0, dword [0x10056dac]
jbe 0x10043a7c
movss xmm0, dword [0x100555c0]
comiss xmm0, dword [edi + 0x1b8]
jb 0x10043a7c
test byte [edi + 0x3c0], 1
je 0x10043a7c
mov byte [edi + 0x454], 1
mov edi, dword [ebp + 8]
cmp byte [edi + 0x454], 0
je 0x10043ada
sub esp, 0xc
lea ecx, [esp + 0x7c]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.10051c90
mov ecx, dword [ebp + 8]
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss dword [ecx + 0x3cc], xmm0
movss dword [ecx + 0x3d0], xmm1
movss dword [ecx + 0x3d4], xmm2
lea ecx, [esp + 0x70]
call fcn.1001b690
cmp dword [esi + 0x10], 2
jb 0x10043cc8
mov edi, dword [esi + 0xc]
mov ecx, dword [esi + 8]
inc edi
mov eax, edi
dec ecx
shr eax, 1
and edi, 1
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov dword [esp + 8], eax
mov eax, dword [eax + edi*8]
test eax, eax
je 0x10043cc8
cmp byte [eax + 0x1c], 0
jne 0x10043cc8
mov eax, dword [0x100d5448]
mov ecx, dword [eax + 0x7c]
mov eax, dword [esi + 0x44]
and dword [ecx + eax], 0xfffffffe
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x14]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 8]
cmp eax, 2
jle 0x10043bbd
movss xmm2, dword [ecx + 0x148]
xorps xmm1, xmm1
movss xmm0, dword [0x100555c4]
xorps xmm3, xmm3
comiss xmm0, xmm2
mov byte [esp + 0xf], 0
jbe 0x10043b8f
test byte [ecx + 0x3c0], 1
mov eax, dword [edx + edi*8]
je 0x10043b70
test byte [eax + 0x3c0], 1
jne 0x10043b8f
comiss xmm2, xmm1
jbe 0x10043b86
divss xmm2, dword [ecx + 0x144]
movss xmm3, dword [ecx + 0x2c]
subss xmm3, xmm2
comiss xmm3, dword [eax + 0x2c]
setae byte [esp + 0xf]
cmp byte [esp + 0xf], 0
mov al, byte [ecx + 0x3c0]
je 0x10043baf
movss xmm0, dword [ecx + 0x2c]
comiss xmm0, xmm3
jae 0x10043bb3
mov eax, dword [edx + edi*8]
mov al, byte [eax + 0x3c0]
test al, 1
je 0x10043bbd
or dword [ecx + 0x3c0], 1
mov ecx, dword [ebp + 8]
mov eax, dword [edx + edi*8]
movss xmm0, dword [ecx + 0x3c4]
mov dword [esp + 0x20], 0x3f800000
mov dword [esp + 0x44], 0
movss xmm1, dword [eax + 0x3c4]
mov eax, dword [ecx + 0x14]
subss xmm0, xmm1
test eax, eax
mov ecx, 1
cmovne ecx, eax
lea eax, [esp + 0x18]
mov dword [esp + 0x2c], ecx
movd xmm2, ecx
lea ecx, [esp + 0x44]
cvtdq2ps xmm2, xmm2
divss xmm0, xmm2
addss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
movss dword [esp + 0x18], xmm1
cmovbe ecx, eax
lea eax, [esp + 0x20]
comiss xmm1, dword [0x10055f88]
cmovbe eax, ecx
movss xmm0, dword [eax]
mov eax, dword [0x100d5448]
mov ecx, dword [eax + 0xcc]
mov eax, dword [esi + 0x44]
movss dword [ecx + eax], xmm0
mov eax, dword [edx + edi*8]
mov ecx, dword [ebp + 8]
add eax, 0x3b4
push eax
lea eax, [esp + 0x5c]
push eax
lea ecx, [ecx + 0x3b4]
call fcn.100433e0
lea ecx, [esp + 0x64]
call fcn.10051cc0
movd xmm3, dword [esp + 0x2c]
lea ecx, [esp + 0x64]
movss xmm2, dword [esp + 0x58]
movss xmm1, dword [esp + 0x5c]
movss xmm0, dword [esp + 0x60]
cvtdq2ps xmm3, xmm3
divss xmm2, xmm3
divss xmm1, xmm3
divss xmm0, xmm3
movss dword [esp + 0x64], xmm2
movss dword [esp + 0x68], xmm1
movss dword [esp + 0x6c], xmm0
movss dword [esp + 0x7c], xmm2
movss dword [esp + 0x80], xmm1
movss dword [esp + 0x84], xmm0
call fcn.1001b690
lea ecx, [esp + 0x58]
call fcn.1001b690
mov eax, dword [0x100d5440]
mov ecx, dword [eax + 0xe8]
mov eax, dword [0x100d5448]
mov edx, dword [eax + 0xf4]
mov eax, dword [esi + 0x44]
mov edx, dword [edx + eax]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x10]
call eax
movss xmm0, dword [0x10056df4]
mov edi, eax
movss dword [esp + 0x1c], xmm0
test edi, edi
je 0x10043d4d
mov ecx, dword [edi]
mov ecx, dword [ecx + 0x6b4]
mov dword [esp + 0x44], ecx
mov ecx, edi
call dword [esp + 0x44]
movss xmm0, dword [0x1005580c]
fstp dword [esp + 0x44]
comiss xmm0, dword [esp + 0x44]
movss dword [esp + 0x1c], xmm0
ja 0x10043d4d
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x6b4]
mov dword [esp + 0x44], eax
call dword [esp + 0x44]
fstp dword [esp + 0x44]
movss xmm0, dword [esp + 0x44]
movss dword [esp + 0x1c], xmm0
mov edi, dword [ebp + 8]
test byte [edi + 0x3c0], 1
je 0x1004437d
xorps xmm2, xmm2
comiss xmm2, dword [edi + 0x1ac]
jb 0x10043dbe
sub esp, 0xc
lea ecx, [esp + 0x7c]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.10051c90
mov ecx, dword [ebp + 8]
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss dword [ecx + 0x3cc], xmm0
movss dword [ecx + 0x3d0], xmm1
movss dword [ecx + 0x3d4], xmm2
lea ecx, [esp + 0x70]
jmp 0x10044375
movss xmm0, dword [edi + 0x1b4]
comiss xmm0, xmm2
jbe 0x1004437d
movss xmm1, dword [edi + 0x3cc]
movss xmm3, dword [edi + 0x3d0]
movss xmm0, dword [edi + 0x3d4]
mulss xmm3, xmm3
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm3, xmm1
xorps xmm1, xmm1
addss xmm3, xmm0
ucomiss xmm3, xmm2
lahf
test ah, 0x44
jnp 0x10043e25
cvtps2pd xmm0, xmm3
ucomisd xmm1, xmm0
ja 0x10043e16
sqrtsd xmm0, xmm0
jmp 0x10043e1b
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
xorps xmm1, xmm1
xorps xmm2, xmm2
cvtsd2ss xmm1, xmm0
movss dword [esp + 8], xmm1
fld dword [esp + 8]
fstp dword [esp + 0x44]
movss xmm0, dword [esp + 0x44]
ucomiss xmm0, xmm0
setp al
cmp al, 1
je 0x10043e7f
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jnp 0x10043e7f
lea ecx, [esp + 0x48]
call fcn.10051cc0
movss xmm0, dword [edi + 0x3cc]
divss xmm0, dword [esp + 8]
movss dword [esp + 0x48], xmm0
movss xmm0, dword [edi + 0x3d0]
divss xmm0, dword [esp + 8]
movss dword [esp + 0x4c], xmm0
jmp 0x10043ea2
sub esp, 0xc
lea ecx, [esp + 0x54]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.10051c90
lea ecx, [esp + 0x48]
mov dword [esp + 0x50], 0
call fcn.10010950
mov edx, dword [ebp + 8]
movss xmm5, dword [0x10055f88]
movss xmm1, dword [0x10056dc4]
movaps xmm0, xmm5
fstp dword [esp + 0x44]
subss xmm0, dword [edx + 0x174]
comiss xmm0, xmm1
ja 0x10043edd
movaps xmm0, xmm1
movss xmm1, dword [edx + 0x1ac]
movss xmm3, dword [esp + 0x1c]
mov eax, dword [0x100d5448]
movaps xmm4, xmm3
mulss xmm4, dword [0x10056dbc]
divss xmm1, xmm0
mov ecx, dword [eax + 0xcc]
mov eax, dword [esi + 0x44]
movaps xmm0, xmm3
movaps xmm2, xmm4
mulss xmm0, dword [0x10056dc0]
subss xmm2, xmm0
mulss xmm2, dword [ecx + eax]
addss xmm2, xmm0
movaps xmm0, xmm5
mulss xmm2, xmm1
movss xmm1, dword [edx + 0x2c4]
comiss xmm1, dword [0x100555bc]
subss xmm0, xmm1
mulss xmm0, dword [0x10058100]
jbe 0x10043f58
comiss xmm5, xmm1
jbe 0x10043f58
mulss xmm0, xmm3
push ecx
movss dword [esp], xmm0
jmp 0x10043f8f
movss xmm0, dword [0x10058104]
comiss xmm0, xmm2
ja 0x10043f89
movss xmm0, dword [esp + 0x44]
comiss xmm2, xmm0
ja 0x10043f89
test byte [edx + 0x3c0], 2
je 0x10043f7c
movaps xmm3, xmm4
comiss xmm0, xmm3
jbe 0x10043fcf
push ecx
movss dword [esp], xmm3
jmp 0x10043f8f
push ecx
movss dword [esp], xmm2
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x50]
call fcn.100105c0
mov ecx, dword [ebp + 8]
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss dword [ecx + 0x3cc], xmm0
movss dword [ecx + 0x3d0], xmm1
movss dword [ecx + 0x3d4], xmm2
lea ecx, [esp + 0x70]
call fcn.1001b690
lea ecx, [esp + 0x48]
jmp 0x10044375
test ecx, ecx
jle 0x1004437d
cmp dword [esi + 0x10], 2
jb 0x1004437d
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
inc edx
mov eax, edx
dec ecx
shr eax, 1
and edx, 1
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + edx*8]
test eax, eax
je 0x1004437d
movss xmm0, dword [edi + 0x24]
subss xmm0, dword [eax + 0x24]
movss dword [esp + 0x44], xmm0
movq xmm0, qword [eax + 0x3b4]
movq qword [esp + 0x64], xmm0
mov eax, dword [eax + 0x3bc]
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x64]
push eax
push ecx
mov dword [esp], 0x3f800000
call fcn.10010740
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x3bc]
subss xmm0, dword [esp + 0x74]
movss dword [esp + 4], xmm0
movss xmm0, dword [eax + 0x3b8]
subss xmm0, dword [esp + 0x70]
movss dword [esp], xmm0
movss xmm0, dword [eax + 0x3b4]
subss xmm0, dword [esp + 0x6c]
push ecx
lea ecx, [esp + 0x7c]
movss dword [esp], xmm0
call fcn.10051c90
lea ecx, [esp + 0x58]
call fcn.10051cc0
movss xmm0, dword [esp + 0x44]
lea ecx, [esp + 0x48]
movss xmm3, dword [esp + 0x70]
sub esp, 0xc
movss xmm2, dword [esp + 0x80]
movss xmm1, dword [esp + 0x84]
divss xmm3, xmm0
mov eax, dword [0x100d5440]
divss xmm2, xmm0
divss xmm1, xmm0
movss dword [esp + 0x64], xmm3
movss dword [esp + 0x68], xmm2
movss dword [esp + 0x6c], xmm1
mov eax, dword [eax + 0x68]
movss xmm0, dword [eax + 0x20]
mulss xmm1, xmm0
mulss xmm2, xmm0
mulss xmm3, xmm0
movss dword [esp + 8], xmm1
movss dword [esp + 4], xmm2
movss dword [esp], xmm3
call fcn.10051c90
movq xmm0, qword [esp + 0x48]
lea ecx, [esp + 0x48]
mov eax, dword [esp + 0x50]
movq qword [esp + 0x7c], xmm0
mov dword [esp + 0x84], eax
call fcn.1001b690
lea ecx, [esp + 0x58]
call fcn.1001b690
lea ecx, [esp + 0x7c]
call fcn.10010950
movss xmm1, dword [esp + 0x80]
movss xmm0, dword [esp + 0x7c]
mulss xmm1, xmm1
mulss xmm0, xmm0
fstp dword [esp + 0xac]
addss xmm1, xmm0
comiss xmm1, dword [0x10056dac]
jbe 0x10044368
lea ecx, [esp + 0x38]
call fcn.10051cc0
movq xmm0, qword [esp + 0x7c]
xorps xmm1, xmm1
mov ecx, dword [esp + 0x84]
movss xmm3, dword [esp + 0x7c]
subss xmm3, dword [eax]
movq qword [esp + 0x58], xmm0
movss xmm0, dword [esp + 0x5c]
subss xmm0, dword [eax + 4]
mov dword [esp + 0x60], ecx
movss xmm4, dword [esp + 0x60]
subss xmm4, dword [eax + 8]
movss dword [esp + 0x20], xmm3
ucomiss xmm0, xmm1
movss dword [esp + 0x58], xmm3
movss dword [esp + 0x5c], xmm0
lahf
movss dword [esp + 8], xmm4
movss dword [esp + 0x60], xmm4
test ah, 0x44
jp 0x10044207
ucomiss xmm3, xmm1
lahf
test ah, 0x44
jp 0x10044207
comiss xmm4, xmm1
jbe 0x100441f4
movss xmm0, dword [0x100555e0]
movss dword [esp + 0x20], xmm1
jmp 0x10044327
movss xmm0, dword [0x100555d0]
movss dword [esp + 0x20], xmm1
jmp 0x10044327
movaps xmm2, xmm0
mulss xmm2, xmm0
movaps xmm0, xmm3
mulss xmm0, xmm3
addss xmm2, xmm0
movss dword [esp + 0x44], xmm2
fld dword [esp + 0x44]
fstp dword [esp + 0x44]
movss xmm0, dword [esp + 0x44]
ucomiss xmm0, xmm0
setp al
cmp al, 1
je 0x1004426c
ucomiss xmm2, xmm1
lahf
test ah, 0x44
jnp 0x1004426c
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1004424f
sqrtsd xmm0, xmm0
jmp 0x10044254
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm3, dword [esp + 0x20]
movss xmm4, dword [esp + 8]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x18], xmm0
jmp 0x10044272
movss dword [esp + 0x18], xmm1
movss xmm0, dword [esp + 0x5c]
xorps xmm4, xmmword [0x10055610]
cvtps2pd xmm0, xmm0
movss dword [esp + 8], xmm4
movsd qword [esp + 0x48], xmm0
fld qword [esp + 0x48]
cvtps2pd xmm0, xmm3
movsd qword [esp + 0x48], xmm0
fld qword [esp + 0x48]
call sub.api_ms_win_crt_math_l1_1_0.dll__CIatan2
fstp qword [esp + 0x48]
movsd xmm0, qword [esp + 0x48]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [0x100555d8]
cvtps2pd xmm0, xmm0
divsd xmm0, qword [0x100555c8]
cvtpd2ps xmm0, xmm0
movss dword [esp + 0x20], xmm0
movss xmm0, dword [esp + 8]
cvtps2pd xmm0, xmm0
movsd qword [esp + 0x48], xmm0
movss xmm0, dword [esp + 0x18]
fld qword [esp + 0x48]
cvtps2pd xmm0, xmm0
movsd qword [esp + 0x48], xmm0
fld qword [esp + 0x48]
call sub.api_ms_win_crt_math_l1_1_0.dll__CIatan2
fstp qword [esp + 0x48]
movsd xmm0, qword [esp + 0x48]
cvtpd2ps xmm0, xmm0
xorps xmm0, xmmword [0x10055610]
mulss xmm0, dword [0x100555e8]
cvtss2sd xmm0, xmm0
divsd xmm0, qword [0x100555c8]
cvtsd2ss xmm0, xmm0
lea ecx, [esp + 0x58]
movss dword [esp + 8], xmm0
call fcn.1001b690
movss xmm0, dword [esp + 8]
lea ecx, [esp + 0x38]
movss dword [esp + 0x94], xmm0
movss xmm0, dword [esp + 0x20]
movss dword [esp + 0x98], xmm0
mov dword [esp + 0x9c], 0
call fcn.1001b690
lea ecx, [esp + 0x70]
call fcn.1001b690
lea ecx, [esp + 0x64]
call fcn.1001b690
mov edi, dword [ebp + 8]
mov eax, dword [0x100d5448]
sub esp, 0xc
movss xmm0, dword [edi + 0x384]
mov edx, esp
movss xmm1, dword [edi + 0x388]
movss xmm2, dword [edi + 0x38c]
mov eax, dword [eax + 0x2c]
add eax, dword [esi + 0x44]
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x44]
movq xmm0, qword [eax + 0x384]
mov eax, dword [eax + 0x38c]
movq qword [edx], xmm0
mov dword [edx + 8], eax
call fcn.10045d90
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 0x44]
movss xmm0, dword [eax + 0x3cc]
movss xmm1, dword [eax + 0x3d0]
movss xmm2, dword [eax + 0x3d4]
movss dword [ecx + 0x94], xmm0
movss dword [ecx + 0x98], xmm1
movss dword [ecx + 0x9c], xmm2
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0xb0]
add eax, dword [esi + 0x44]
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x3c8]
mov eax, dword [0x100d5448]
mov ecx, dword [eax + 0x58]
mov eax, dword [esi + 0x44]
movss dword [ecx + eax], xmm0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3e0]
movq xmm0, qword [eax + 0x3d8]
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0x40]
add eax, dword [esi + 0x44]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
mov eax, dword [0x100d5448]
mov ecx, dword [eax + 0x10c]
mov eax, dword [esi + 0x44]
mov byte [ecx + eax], 1
cmp byte [esi + 0x15cd], 0
jne 0x100445be
cmp byte [esp + 0x17], 0
jne 0x100445be
sub esp, 8
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x100444aa
lock inc dword [eax + 4]
mov eax, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
mov dword [ecx + 4], eax
mov ecx, 0x1012e2b8
push esi
call fcn.1004f300
mov ecx, dword [ebp + 8]
cmp byte [ecx + 0x455], 0
jne 0x100444d5
cmp dword [ecx + 0x468], 6
je 0x100444e2
cmp dword [ecx + 0x468], 1
jne 0x100445c1
cmp dword [ecx + 0x468], 1
movss xmm0, dword [0x100575d4]
movss dword [esp + 8], xmm0
jne 0x10044507
movss xmm0, dword [0x10056de8]
movss dword [esp + 8], xmm0
mov edi, dword [ecx + 0x460]
lea eax, [ecx + 0x45c]
add ecx, 0x3c8
mov dword [esp + 0x18], eax
cmp edi, dword [eax + 8]
je 0x10044567
movss xmm0, dword [ecx]
lea eax, [edi + 0x10]
push 0x60
push 0
push eax
movss dword [esp + 0x50], xmm0
mov dword [edi], 0
mov dword [edi + 4], 0
mov dword [edi + 8], 0
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [esp + 0x24]
lea eax, [edi + 0x70]
movss xmm0, dword [esp + 0x50]
add esp, 0xc
movss dword [edi + 0xc], xmm0
mov dword [ecx + 4], eax
jmp 0x10044570
push ecx
push edi
mov ecx, eax
call fcn.10041cf0
mov eax, dword [ebp + 8]
movss xmm0, dword [esp + 8]
addss xmm0, dword [eax + 0x3c8]
lea ecx, [eax + 0x45c]
lea eax, [esp + 0x44]
push eax
movss dword [esp + 0x48], xmm0
call fcn.10042110
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x3c8]
lea ecx, [eax + 0x45c]
subss xmm0, dword [esp + 8]
lea eax, [esp + 0x44]
push eax
movss dword [esp + 0x48], xmm0
call fcn.10042110
mov ecx, dword [ebp + 8]
mov eax, dword [0x100d5440]
mov eax, dword [eax + 0x68]
movss xmm0, dword [eax + 0x10]
movss dword [esp + 0x34], xmm0
movss xmm0, dword [eax + 0x14]
movss dword [esp + 0x48], xmm0
movss xmm0, dword [ecx + 0x2c]
movss dword [eax + 0x10], xmm0
mov eax, dword [0x100d5440]
mov eax, dword [eax + 0x68]
movss xmm0, dword [eax + 0x20]
movss dword [eax + 0x14], xmm0
cmp byte [esi + 0x15cd], 0
jne 0x10044d1c
cmp byte [esp + 0x17], 0
jne 0x10044d1c
xor eax, eax
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
cmp byte [eax + 0x455], 0
jne 0x1004462e
cmp dword [eax + 0x468], 6
je 0x10044639
mov eax, dword [eax + 0x468]
cmp eax, 1
jne 0x10044641
lea eax, [esi + 0x1590]
jmp 0x10044659
cmp eax, 3
jne 0x1004464e
lea eax, [esi + 0x1570]
jmp 0x10044659
cmp eax, 4
jne 0x1004465d
lea eax, [esi + 0x1580]
mov dword [esp + 0x1c], eax
push 0x344
lea eax, [esp + 0x824]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [esp + 0x820]
call fcn.10042180
mov edi, dword [esp + 0x24]
lea ecx, [esp + 0x820]
push edi
call fcn.10042a70
push 0x344
lea eax, [esp + 0x4dc]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [esp + 0x4d8]
call fcn.10042180
xor al, al
mov byte [esp + 0xf], al
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10044ad7
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, dword [ebp + 8]
sar ecx, 1
mov dword [esp + 0x44], ecx
mov ecx, dword [eax + 0x460]
sub ecx, dword [eax + 0x45c]
mov eax, 0x92492493
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x44]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, ecx
jne 0x10044ad7
mov dword [esp + 0x20], 0
test ecx, ecx
je 0x10044ad7
xor ecx, ecx
xor edx, edx
mov dword [esp + 8], ecx
mov dword [esp + 0x18], edx
nop dword [eax + eax]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x45c]
add eax, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x15a0]
add eax, ecx
mov ecx, edi
push eax
call fcn.10042a70
mov ecx, dword [esp + 0x2c]
sub esp, 8
movss xmm0, dword [ecx + 0xc]
mov dword [esp + 4], 0x43340000
movss dword [esp], xmm0
call fcn.1002f6d0
mov eax, dword [0x100d5448]
add esp, 8
fstp dword [esp + 0x44]
movss xmm0, dword [esp + 0x44]
mov ecx, dword [eax + 0x40]
mov eax, dword [esi + 0x44]
movss dword [ecx + eax + 4], xmm0
mov edx, dword [0x100d5440]
mov eax, dword [edi + 0x70]
mov ecx, dword [edx + 0x68]
cmp eax, dword [ecx + 4]
jl 0x10044793
mov eax, dword [ecx + 4]
dec eax
mov dword [edi + 0x70], eax
cmp dword [esi + 0x10], 2
jb 0x100447b7
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
inc edx
mov eax, edx
dec ecx
shr eax, 1
and edx, 1
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + edx*8]
test eax, eax
jne 0x100447ba
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x34]
sub esp, 8
movss dword [edi + 0x98], xmm0
mov eax, dword [0x100d5448]
mov ecx, dword [esi + 0x44]
mov dword [esp + 4], 0x43b40000
mov edx, dword [eax + 0x40]
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x3c8]
subss xmm0, dword [edx + ecx + 4]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm1, dword [0x10058108]
lea ecx, [esp + 0x4c]
fstp dword [esp + 0x4c]
movss xmm0, dword [esp + 0x4c]
lea eax, [esp + 0x38]
comiss xmm1, xmm0
mov dword [esp + 0x18], 0x42700000
mov dword [esp + 0x38], 0xc2700000
mov dword [esp + 4], 0x43b40000
cmovbe eax, ecx
lea ecx, [esp + 0x18]
comiss xmm0, dword [0x100580bc]
cmovbe ecx, eax
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0x40]
add eax, dword [esi + 0x44]
movss xmm0, dword [eax + 4]
addss xmm0, dword [ecx]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [esp + 0x18]
movss xmm0, dword [esp + 0x18]
xorps xmm1, xmm1
add esp, 8
comiss xmm1, xmm0
jbe 0x1004487b
addss xmm0, dword [0x100555e4]
movss dword [edi + 0x80], xmm0
mov eax, dword [esi + 0x44]
and dword [eax + 0xe8], 0xffffe7ff
mov ecx, dword [esi + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0x368]
call eax
sub esp, 8
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x100448ba
lock inc dword [eax + 4]
mov eax, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
push esi
mov dword [ecx + 4], eax
call fcn.1004aba0
mov eax, dword [0x100d5448]
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov eax, dword [eax + 0xe8]
add eax, dword [esi + 0x44]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 0x10], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x30], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x40], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx + 0x50], xmm0
movups xmm0, xmmword [eax + 0x50]
movups xmmword [ecx + 0x60], xmm0
mov ecx, dword [esi + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
call eax
mov ecx, dword [esp + 0x2c]
push edi
movq xmm0, qword [eax]
movq qword [ecx], xmm0
mov eax, dword [eax + 8]
mov dword [ecx + 8], eax
mov ecx, dword [esi + 0x15a0]
add ecx, dword [esp + 0xc]
call fcn.10042a70
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp dword [eax + 0xc], ecx
jne 0x100449d2
mov ecx, dword [esi + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
call eax
push edi
mov byte [esp + 0x13], 1
mov ecx, dword [eax + 8]
movq xmm0, qword [eax]
mov eax, dword [ebp + 8]
movq qword [eax + 0x3e4], xmm0
mov dword [eax + 0x3ec], ecx
lea ecx, [esp + 0x4dc]
call fcn.10042a70
mov eax, dword [0x100d5448]
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 0xe8]
add eax, dword [esi + 0x44]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 0x3f0], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x400], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x410], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x420], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx + 0x430], xmm0
movups xmm0, xmmword [eax + 0x50]
movups xmmword [ecx + 0x440], xmm0
lea eax, [esp + 0x820]
mov ecx, edi
push eax
call fcn.10042a70
mov eax, dword [0x100d5448]
movups xmm0, xmmword [esp + 0x478]
mov ecx, dword [0x1012eb0c]
mov eax, dword [eax + 0xe8]
add eax, dword [esi + 0x44]
movups xmmword [eax], xmm0
movups xmm0, xmmword [esp + 0x488]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [esp + 0x498]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [esp + 0x4a8]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [esp + 0x4b8]
movups xmmword [eax + 0x40], xmm0
movups xmm0, xmmword [esp + 0x4c8]
movups xmmword [eax + 0x50], xmm0
mov eax, dword [esi + 0x44]
mov dword [esp + 0x10], eax
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100d6b7c]
cmp eax, dword [ecx + 4]
jg 0x100452a5
mov edi, dword [0x100d6b78]
lea esi, [esp + 0x130]
mov eax, dword [esp + 0x10]
mov ecx, 0xd2
mov edx, dword [esp + 0x20]
add dword [esp + 0x18], 0x70
inc edx
add dword [esp + 8], 0x344
mov edi, dword [eax + edi]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 4]
sub eax, dword [ecx]
sar eax, 1
cmp edx, eax
jae 0x10044ab2
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x18]
jmp 0x10044720
cmp byte [esp + 0xf], 0
je 0x10044acf
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x4d8]
push eax
call fcn.10042a70
jmp 0x10044cff
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov eax, dword [ebp + 8]
movq xmm0, qword [eax + 0x3d8]
mov ecx, dword [eax + 0x3e0]
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0x40]
add eax, dword [esi + 0x44]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
mov eax, dword [0x100d5440]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 4]
cmp dword [edi + 0x70], eax
jl 0x10044b0e
dec eax
mov dword [edi + 0x70], eax
cmp dword [esi + 0x10], 2
jb 0x10044b32
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
inc edx
mov eax, edx
dec ecx
shr eax, 1
and edx, 1
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + edx*8]
test eax, eax
jne 0x10044b35
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x34]
sub esp, 8
movss dword [edi + 0x98], xmm0
mov eax, dword [0x100d5448]
mov ecx, dword [esi + 0x44]
mov dword [esp + 4], 0x43b40000
mov edx, dword [eax + 0x40]
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x3c8]
subss xmm0, dword [edx + ecx + 4]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm1, dword [0x10058108]
lea ecx, [esp + 0x4c]
fstp dword [esp + 0x4c]
movss xmm0, dword [esp + 0x4c]
lea eax, [esp + 0x18]
comiss xmm1, xmm0
mov dword [esp + 0x38], 0x42700000
mov dword [esp + 0x18], 0xc2700000
mov dword [esp + 4], 0x43b40000
cmovbe eax, ecx
lea ecx, [esp + 0x38]
comiss xmm0, dword [0x100580bc]
cmovbe ecx, eax
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0x40]
add eax, dword [esi + 0x44]
movss xmm0, dword [eax + 4]
addss xmm0, dword [ecx]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [esp + 0x18]
movss xmm1, dword [esp + 0x18]
xorps xmm0, xmm0
add esp, 8
comiss xmm0, xmm1
jbe 0x10044bf6
addss xmm1, dword [0x100555e4]
movss dword [edi + 0x80], xmm1
mov eax, dword [esi + 0x44]
and dword [eax + 0xe8], 0xffffe7ff
mov ecx, dword [esi + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0x368]
call eax
sub esp, 8
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x10044c35
lock inc dword [eax + 4]
mov eax, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
push esi
mov dword [ecx + 4], eax
call fcn.1004aba0
mov ecx, dword [esi + 0x44]
add esp, 0xc
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
call eax
movq xmm0, qword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [ebp + 8]
movq qword [eax + 0x3e4], xmm0
mov dword [eax + 0x3ec], ecx
mov eax, dword [0x100d5448]
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 0xe8]
add eax, dword [esi + 0x44]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 0x3f0], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x400], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x410], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x420], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx + 0x430], xmm0
movups xmm0, xmmword [eax + 0x50]
movups xmmword [ecx + 0x440], xmm0
mov eax, dword [esi + 0x44]
mov ecx, dword [0x1012eb0c]
mov dword [esp + 0x10], eax
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100d6b7c]
cmp eax, dword [ecx + 4]
jg 0x100452ea
mov edi, dword [0x100d6b78]
lea esi, [esp + 0x130]
mov eax, dword [esp + 0x10]
mov ecx, 0xd2
mov edi, dword [eax + edi]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x4d8]
call fcn.10042860
lea ecx, [esp + 0x820]
call fcn.10042860
jmp 0x10044f48
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x24]
movq xmm0, qword [eax + 0x3d8]
mov ecx, dword [eax + 0x3e0]
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0x40]
add eax, dword [esi + 0x44]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
mov eax, dword [0x100d5440]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 4]
cmp dword [edi + 0x70], eax
jl 0x10044d57
dec eax
mov dword [edi + 0x70], eax
cmp dword [esi + 0x10], 2
jb 0x10044d7b
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
inc edx
mov eax, edx
dec ecx
shr eax, 1
and edx, 1
and ecx, eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + edx*8]
test eax, eax
jne 0x10044d7e
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x34]
sub esp, 8
movss dword [edi + 0x98], xmm0
mov eax, dword [0x100d5448]
mov ecx, dword [esi + 0x44]
mov dword [esp + 4], 0x43b40000
mov edx, dword [eax + 0x40]
mov eax, dword [ebp + 8]
movss xmm0, dword [eax + 0x3c8]
subss xmm0, dword [edx + ecx + 4]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
movss xmm0, dword [0x10058108]
lea ecx, [esp + 0x4c]
fstp dword [esp + 0x4c]
movss xmm1, dword [esp + 0x4c]
lea eax, [esp + 0x18]
comiss xmm0, xmm1
mov dword [esp + 0x38], 0x42700000
mov dword [esp + 0x18], 0xc2700000
mov dword [esp + 4], 0x43b40000
cmovbe eax, ecx
lea ecx, [esp + 0x38]
comiss xmm1, dword [0x100580bc]
cmovbe ecx, eax
mov eax, dword [0x100d5448]
mov eax, dword [eax + 0x40]
add eax, dword [esi + 0x44]
movss xmm0, dword [eax + 4]
addss xmm0, dword [ecx]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_remainderf]
fstp dword [esp + 0x18]
movss xmm1, dword [esp + 0x18]
xorps xmm0, xmm0
add esp, 8
comiss xmm0, xmm1
jbe 0x10044e3f
addss xmm1, dword [0x100555e4]
movss dword [edi + 0x80], xmm1
mov eax, dword [esi + 0x44]
and dword [eax + 0xe8], 0xffffe7ff
mov ecx, dword [esi + 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0x368]
call eax
sub esp, 8
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x10044e7e
lock inc dword [eax + 4]
mov eax, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
push esi
mov dword [ecx + 4], eax
call fcn.1004aba0
mov ecx, dword [esi + 0x44]
add esp, 0xc
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
call eax
movq xmm0, qword [eax]
mov ecx, dword [eax + 8]
mov eax, dword [ebp + 8]
movq qword [eax + 0x3e4], xmm0
mov dword [eax + 0x3ec], ecx
mov eax, dword [0x100d5448]
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 0xe8]
add eax, dword [esi + 0x44]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 0x3f0], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x400], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x410], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x420], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx + 0x430], xmm0
movups xmm0, xmmword [eax + 0x50]
movups xmmword [ecx + 0x440], xmm0
mov eax, dword [esi + 0x44]
mov ecx, dword [0x1012eb0c]
mov dword [esp + 0x10], eax
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100d6b7c]
cmp eax, dword [ecx + 4]
jg 0x1004532f
mov edi, dword [0x100d6b78]
lea esi, [esp + 0x130]
mov eax, dword [esp + 0x10]
mov ecx, 0xd2
mov edi, dword [eax + edi]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x100d5440]
sub esp, 0xc
movss xmm0, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
mov eax, dword [eax + 0x68]
movss dword [eax + 0x10], xmm0
mov eax, dword [0x100d5440]
movss xmm0, dword [esp + 0x54]
mov eax, dword [eax + 0x68]
movss dword [eax + 0x14], xmm0
mov eax, dword [0x100d5448]
mov ecx, dword [eax + 0x10c]
mov eax, dword [esi + 0x44]
mov byte [ecx + eax], 0
mov eax, dword [0x100d5448]
movss xmm1, dword [esp + 0x100]
movss xmm2, dword [esp + 0x104]
movss xmm0, dword [esp + 0xfc]
mov eax, dword [eax + 0x2c]
add eax, dword [esi + 0x44]
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
mov eax, dword [0x100d5448]
movss xmm1, dword [esp + 0x118]
movss xmm2, dword [esp + 0x11c]
movss xmm0, dword [esp + 0x114]
mov eax, dword [eax + 0xb0]
add eax, dword [esi + 0x44]
movss dword [eax], xmm0
movss dword [eax + 4], xmm1
movss dword [eax + 8], xmm2
mov eax, dword [esi + 0x44]
movss xmm0, dword [esp + 0x120]
movss xmm1, dword [esp + 0x124]
movss xmm2, dword [esp + 0x128]
movss dword [eax + 0x94], xmm0
movss dword [eax + 0x98], xmm1
movss dword [eax + 0x9c], xmm2
mov eax, dword [0x100d5448]
mov ecx, dword [esi + 0x44]
mov edx, dword [eax + 0x7c]
mov eax, dword [esp + 0x12c]
mov dword [edx + ecx], eax
mov edx, esp
mov ecx, dword [esi + 0x44]
mov eax, dword [esp + 0x130]
mov dword [ecx + 0xe8], eax
mov eax, dword [0x100d5448]
movss xmm0, dword [esp + 0x134]
mov ecx, dword [eax + 0xcc]
mov eax, dword [esi + 0x44]
movss dword [ecx + eax], xmm0
mov eax, dword [0x100d5448]
movss xmm0, dword [esp + 0x138]
mov ecx, dword [eax + 0x58]
mov eax, dword [esi + 0x44]
movss dword [ecx + eax], xmm0
movq xmm0, qword [esp + 0x108]
mov eax, dword [esp + 0x110]
mov ecx, dword [esi + 0x44]
movq qword [edx], xmm0
mov dword [edx + 8], eax
call fcn.10045d90
mov eax, dword [esi + 0x44]
mov ecx, dword [0x1012eb0c]
mov dword [esp + 0x48], eax
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100d6b7c]
cmp eax, dword [ecx + 4]
jg 0x10045374
mov edi, dword [0x100d6b78]
lea esi, [esp + 0x130]
mov eax, dword [esp + 0x48]
mov ecx, 0xd2
mov edi, dword [eax + edi]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x100d5448]
mov ecx, dword [esp + 0x28]
movups xmm0, xmmword [esp + 0x478]
mov eax, dword [eax + 0xe8]
add eax, dword [ecx + 0x44]
lea ecx, [esp + 0x7c]
movups xmmword [eax], xmm0
movups xmm0, xmmword [esp + 0x488]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [esp + 0x498]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [esp + 0x4a8]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [esp + 0x4b8]
movups xmmword [eax + 0x40], xmm0
movups xmm0, xmmword [esp + 0x4c8]
movups xmmword [eax + 0x50], xmm0
call fcn.1001b690
lea ecx, [esp + 0xe0]
call fcn.1001b690
lea ecx, [esp + 0xd4]
call fcn.1001b690
lea ecx, [esp + 0xa0]
call fcn.1001b690
lea ecx, [esp + 0x114]
call fcn.1001b690
lea ecx, [esp + 0x108]
call fcn.1001b690
lea ecx, [esp + 0xfc]
call fcn.1001b690
lea ecx, [esp + 0xf0]
call fcn.1001b690
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x100451c3
or edi, 0xffffffff
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x100451c3
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], edi
dec edi
jne 0x100451c3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov ecx, dword [esp + 0xb6c]
pop edi
pop esi
xor ecx, esp
call fcn.100525c5
mov esp, ebp
pop ebp
ret 8
push 0x100d6b84
call fcn.100524ef
add esp, 4
cmp dword [0x100d6b84], 0xffffffff
jne 0x100434a5
push 0xffffffffffffffff
push str.8B_8E_________85_C9_74_3E
push str.client.dll
call fcn.1000ca70
push 0x100d6b84
mov eax, dword [eax + 2]
mov dword [0x100d6b80], eax
call fcn.100524a5
add esp, 0x10
jmp 0x100434a5
push 0x1012e538
call fcn.100524ef
add esp, 4
cmp dword [0x1012e538], 0xffffffff
jne 0x10043516
push 0xffffffffffffffff
push str.56_6A_01_68_________8B_F1
push str.client.dll
call fcn.1000ca70
push 0x1012e538
mov dword [0x1012e534], eax
call fcn.100524a5
add esp, 0x10
jmp 0x10043516
push 0x100d6b7c
call fcn.100524ef
add esp, 4
cmp dword [0x100d6b7c], 0xffffffff
jne 0x10043711
push 0xffffffffffffffff
push str.8B_80_________03_C1_74__
push str.client.dll
call fcn.1000ca70
push 0x100d6b7c
mov eax, dword [eax + 2]
mov dword [0x100d6b78], eax
call fcn.100524a5
add esp, 0x10
jmp 0x10043711
push 0x100d6b7c
call fcn.100524ef
add esp, 4
cmp dword [0x100d6b7c], 0xffffffff
jne 0x10044a5d
push 0xffffffffffffffff
push str.8B_80_________03_C1_74__
push str.client.dll
call fcn.1000ca70
push 0x100d6b7c
mov eax, dword [eax + 2]
mov dword [0x100d6b78], eax
call fcn.100524a5
add esp, 0x10
jmp 0x10044a5d
push 0x100d6b7c
call fcn.100524ef
add esp, 4
cmp dword [0x100d6b7c], 0xffffffff
jne 0x10044ce4
push 0xffffffffffffffff
push str.8B_80_________03_C1_74__
push str.client.dll
call fcn.1000ca70
push 0x100d6b7c
mov eax, dword [eax + 2]
mov dword [0x100d6b78], eax
call fcn.100524a5
add esp, 0x10
jmp 0x10044ce4
push 0x100d6b7c
call fcn.100524ef
add esp, 4
cmp dword [0x100d6b7c], 0xffffffff
jne 0x10044f2d
push 0xffffffffffffffff
push str.8B_80_________03_C1_74__
push str.client.dll
call fcn.1000ca70
push 0x100d6b7c
mov eax, dword [eax + 2]
mov dword [0x100d6b78], eax
call fcn.100524a5
add esp, 0x10
jmp 0x10044f2d
push 0x100d6b7c
call fcn.100524ef
add esp, 4
cmp dword [0x100d6b7c], 0xffffffff
jne 0x100450ca
push 0xffffffffffffffff
push str.8B_80_________03_C1_74__
push str.client.dll
call fcn.1000ca70
push 0x100d6b7c
mov eax, dword [eax + 2]
mov dword [0x100d6b78], eax
call fcn.100524a5
add esp, 0x10
jmp 0x100450ca