Function at 0x45ece9
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x84
lea eax, [ebp - 0x18]
mov esi, edx
mov dword [eax - 4], esp
or dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x5021c0
mov edx, dword fs:[0]
mov dword [eax], edx
mov dword fs:[0], eax
mov edi, dword [esi + 0x20]
test edi, edi
je 0x45ef1e
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [ebp - 0x40], ecx
xor ebx, ebx
div edi
mov dword [ebp - 0x2c], 0
movd xmm1, eax
mov dword [ebp - 0x3c], eax
por xmm1, xmmword [0x52a530]
subsd xmm1, qword [0x52a4c0]
cvtsd2ss xmm1, xmm1
mulss xmm1, xmm0
movaps xmm0, xmm1
cvttss2si edx, xmm1
subss xmm0, dword [0x52a590]
mov ecx, edx
sar ecx, 0x1f
cvttss2si edi, xmm0
xorps xmm0, xmm0
and edi, ecx
or edi, edx
ucomiss xmm1, xmm0
cmovb edi, ebx
seta cl
xor edx, edx
dec edx
ucomiss xmm1, dword [0x52a594]
cmova edi, edx
mov edx, dword [esi + 0x3c]
cmp edi, eax
mov dword [ebp - 0x38], edi
mov edi, dword [ebp + 0xc]
setb al
and al, cl
mov byte [ebp - 0x1d], al
mov dword [ebp - 0x28], edx
je 0x45ee3e
mov ebx, edx
xor eax, eax
sub ebx, 2
cmovb ebx, eax
xor eax, eax
inc eax
cmp ebx, 2
mov dword [ebp - 0x2c], eax
jae 0x45edbf
mov dword [ebp - 0x24], eax
jmp 0x45ee3e
movss dword [esp], xmm1
movups xmmword [ebp - 0x54], xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll_truncf
movd xmm0, ebx
fstp dword [ebp - 0x44]
por xmm0, xmmword [0x52a530]
movups xmm1, xmmword [ebp - 0x54]
subsd xmm0, qword [0x52a4c0]
subss xmm1, dword [ebp - 0x44]
cvtsd2ss xmm0, xmm0
mulss xmm0, xmm1
movaps xmm1, xmm0
cvttss2si ecx, xmm0
subss xmm1, dword [0x52a590]
mov edx, ecx
sar edx, 0x1f
cvttss2si eax, xmm1
xorps xmm1, xmm1
and eax, edx
mov edx, dword [ebp - 0x28]
or eax, ecx
ucomiss xmm0, xmm1
mov ecx, 0
cmovb eax, ecx
ucomiss xmm0, dword [0x52a594]
mov ecx, 0xffffffff
cmova eax, ecx
mov ecx, 0
sub ebx, eax
cmovb ebx, ecx
mov dword [ebp - 0x24], ebx
mov ecx, dword [esi + 0x38]
lea eax, [edx - 1]
mov dword [esp + 4], 0x57498c
mov dword [esp], eax
mov dword [ebp - 0x54], ecx
call fcn.0045fcf5
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], eax
mov al, 9
lea ecx, [ebp - 0x88]
mov byte [ecx + 0xc], al
mov byte [ecx + 0xe], al
and dword [ecx], 0
and dword [ecx + 8], 0
test edi, edi
mov dword [ecx + 0x10], 2
cmove edi, ecx
and dword [ebp - 0x10], 0
lea ecx, [ebp - 0x68]
mov edx, edi
call fcn.0045f2e5
mov edx, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x38]
movzx ecx, byte [ebp - 0x1d]
xor eax, eax
mov edi, dword [ebp - 0x34]
sub edx, esi
mov dword [ebp - 0x74], edi
cmovb edx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x30]
cmovb edx, eax
or dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x6c], edx
mov edx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x54]
movsd xmm1, qword [ebp - 0x64]
movsd xmm0, qword [ebp - 0x5c]
movsd xmm2, qword [ebp - 0x74]
mov dword [edx + 0x28], ecx
mov ecx, dword [ebp - 0x28]
mov dword [edx + 0x2c], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [edx + 0x30], esi
mov dword [edx], ecx
mov ecx, dword [ebp - 0x24]
mov dword [edx + 4], ecx
movsd qword [edx + 0x18], xmm1
movsd xmm1, qword [ebp - 0x6c]
lea ecx, [ebp - 0x88]
movsd qword [edx + 0x20], xmm0
movsd qword [edx + 8], xmm2
movsd qword [edx + 0x10], xmm1
call fcn.00425f76
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x57497c
call fcn.00526b10
push ebp
sub esp, 8
add ebp, 0xc
lea ecx, [ebp - 0x88]
call fcn.00425f76
add esp, 8
pop ebp
ret