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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
mov eax, dword [0x566090]
xor eax, esp
mov dword [esp + 0x94], eax
cmp byte [ebp + 0x18], 2
xorps xmm0, xmm0
movsd xmm1, qword [ebp + 8]
push esi
sete al
comisd xmm0, xmm1
push edi
mov edi, dword [ebp + 0x24]
mov dword [esp + 0x6c], edi
mov byte [esp + 0xb], al
jb 0x447031
mov esi, dword [ebp + 0x10]
test esi, esi
jle 0x446ffc
test al, al
je 0x446ffc
cmp esi, dword [edi + 0xc]
jbe 0x446fd3
mov eax, dword [edi]
mov ecx, edi
push esi
call dword [eax]
push esi
push 0x30
push dword [edi + 4]
mov dword [edi + 8], esi
call fcn.004feb20
add esp, 0xc
neg esi
mov eax, esi
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.004fc7af
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 8]
lea edx, [ecx + 1]
cmp edx, dword [edi + 0xc]
jbe 0x447011
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 + 0x94]
xor ecx, esp
call fcn.004fc7af
mov esp, ebp
pop ebp
ret
mov al, byte [ebp + 0x20]
mov ecx, dword [ebp + 0x10]
test al, 8
jne 0x447068
movups xmm0, xmmword [ebp + 0x14]
sub esp, 0x10
mov edx, edi
mov eax, esp
movaps xmm2, xmm1
movups xmmword [eax], xmm0
call fcn.00447a20
add esp, 0x10
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.004fc7af
mov esp, ebp
pop ebp
ret
mov dword [esp + 0xc], 0
mov dword [esp + 0x44], 0
test ecx, ecx
jns 0x447402
movlpd qword [esp + 0x10], xmm0
lea ecx, [esp + 0x10]
mov dword [esp + 0x18], 0
test al, 4
je 0x447164
call fcn.0044a800
mov esi, dword [esp + 0x18]
xor edx, edx
mov dword [esp + 0x4c], edx
mov ecx, 0x10000000
mov dword [esp + 0x48], ecx
cmp esi, 0xffffff4e
jge 0x4470df
mov eax, 0xffffff4e
xor ecx, ecx
sub eax, esi
add eax, 0x1c
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x48], ecx
cmovae edx, ecx
mov dword [esp + 0x4c], edx
mov esi, dword [esp + 0x10]
add ecx, esi
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
adc edx, edi
mov dword [esp + 0x28], eax
sub esp, 0x10
mov dword [esp + 0x30], ecx
mov eax, esp
mov dword [esp + 0x34], edx
lea ecx, [esp + 0x30]
movups xmm0, xmmword [esp + 0x30]
movups xmmword [eax], xmm0
call fcn.004489f0
mov eax, dword [esp + 0x28]
add esp, 0x10
test esi, esi
jne 0x447130
cmp edi, 0x100000
jne 0x447130
cmp eax, 0xffffff4e
jle 0x447130
lea ecx, [esi + 1]
jmp 0x447132
xor ecx, ecx
movq xmm1, qword [esp + 0x48]
sub eax, dword [esp + 0x28]
movq xmm2, qword [esp + 0x10]
movd xmm0, ecx
psrlq xmm1, xmm0
movd xmm0, eax
psubq xmm2, xmm1
psllq xmm2, xmm0
movq qword [esp + 0x88], xmm2
jmp 0x44721c
call fcn.0044a800
mov edx, dword [esp + 0x10]
test al, al
mov edi, dword [esp + 0x14]
mov ecx, edx
mov eax, edi
je 0x447197
shld eax, ecx, 2
shl ecx, 2
add ecx, 0xffffffff
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
adc eax, 0xffffffff
mov dword [esp + 0x24], eax
lea eax, [ecx - 2]
jmp 0x4471b2
shld eax, ecx, 1
add ecx, ecx
add ecx, 0xffffffff
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
adc eax, 0xffffffff
mov dword [esp + 0x24], eax
lea eax, [ecx - 1]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x20]
movups xmm1, xmmword [eax]
mov eax, edi
shld eax, edx, 1
movaps xmmword [esp + 0x70], xmm1
add edx, edx
add edx, 1
mov dword [esp + 0x20], edx
adc eax, 0
sub esp, 0x10
mov dword [esp + 0x34], eax
lea eax, [ecx - 1]
mov dword [esp + 0x38], eax
lea ecx, [esp + 0x30]
movups xmm0, xmmword [esp + 0x30]
mov eax, esp
movups xmmword [eax], xmm0
call fcn.0044a890
psrldq xmm1, 8
add esp, 0x10
movd eax, xmm1
movq xmm1, qword [esp + 0x70]
sub eax, dword [esp + 0x28]
movd xmm0, eax
psllq xmm1, xmm0
movq qword [esp + 0x88], xmm1
mov eax, dword [esp + 0x20]
and edi, 0x100000
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x90], eax
lea eax, [esp + 0x88]
mov dword [esp + 0x94], ecx
movups xmm0, xmmword [eax]
xor eax, eax
or eax, edi
movups xmmword [esp + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x10]
movaps xmmword [esp + 0x10], xmm0
mov esi, dword [esp + 0x18]
jne 0x447288
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
shld ecx, eax, 1
dec esi
add eax, eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x50], eax
and ecx, 0x100000
xor eax, eax
or eax, ecx
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x50]
je 0x447263
jmp 0x447298
mov eax, dword [esp + 0x14]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x44]
add esi, 0xfffffff5
mov edx, 0xffffff84
lea ecx, [esp + 0x88]
push eax
sub edx, esi
call fcn.00445ea0
mov edi, dword [esp + 0x8c]
add esp, 4
mov eax, dword [esp + 0x90]
add eax, 0x40
add esi, eax
push dword [esp + 0x8c]
push edi
push dword [esp + 0x34]
push dword [esp + 0x34]
call fcn.00445e20
mov ecx, dword [esp + 0x7c]
add eax, 1
push dword [esp + 0x9c]
mov dword [esp + 0x7c], eax
adc edx, 0
mov eax, dword [esp + 0x64]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x78]
shld ecx, eax, 0xb
push edi
shl eax, 0xb
push ecx
push eax
mov dword [esp + 0x68], edx
mov dword [esp + 0x34], 0
call fcn.00445e20
mov ecx, dword [esp + 0x88]
sub ecx, eax
mov dword [esp + 0x98], esi
mov eax, dword [esp + 0x68]
sbb eax, edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], eax
add esp, 0x10
mov eax, dword [esp + 0x78]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x84], eax
mov eax, esp
push dword [esp + 0x9c]
movups xmm0, xmmword [esp + 0x84]
push edi
push dword [esp + 0x3c]
movups xmmword [eax], xmm0
push dword [esp + 0x3c]
call fcn.00445e20
mov ecx, dword [esp + 0x88]
add esp, 0x10
sub ecx, eax
mov eax, dword [esp + 0x58]
sbb eax, edx
add ecx, 1
lea edx, [esp + 0x20]
adc eax, 0
push eax
push ecx
lea ecx, [esp + 0x24]
call fcn.00448f20
add esp, 0x18
cmp eax, 2
jne 0x4473e2
mov eax, dword [esp + 0xc]
lea edx, [esp + 0xc]
mov ecx, dword [esp + 0x14]
dec eax
sub ecx, dword [esp + 0x44]
movsd xmm2, qword [ebp + 8]
add eax, ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xc], eax
call fcn.00449150
mov eax, dword [esp + 0xc]
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.004fc7af
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x14]
cmp edi, dword [esi + 0xc]
jbe 0x4473f6
mov eax, dword [esi]
mov ecx, esi
push edi
call dword [eax]
mov dword [esi + 8], edi
mov esi, dword [esp + 0xc]
jmp 0x447530
cmp ecx, 0x11
jg 0x44703b
lea ecx, [esp + 0x70]
call fcn.0044a800
movups xmm0, xmmword [esp + 0x70]
sub esp, 0x10
lea ecx, [esp + 0x80]
mov eax, esp
movups xmmword [eax], xmm0
call fcn.004489f0
mov esi, dword [esp + 0x88]
lea eax, [esp + 0x54]
mov edx, 0xffffff84
lea ecx, [esp + 0x30]
push eax
sub edx, esi
call fcn.00445ea0
add esp, 0x14
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x7c]
push dword [esp + 0x7c]
call fcn.00445e20
mov dword [esp + 0x80], eax
lea ecx, [esp + 0x1c]
mov eax, dword [esp + 0x38]
add esi, 0x40
add eax, esi
mov dword [esp + 0x84], edx
mov esi, dword [ebp + 0x10]
lea edx, [esp + 0x30]
mov dword [esp + 0x88], eax
mov eax, dword [edi + 4]
movups xmm0, xmmword [esp + 0x80]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x54]
neg eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x3c], eax
mov al, byte [esp + 0x1b]
mov byte [esp + 0x40], al
mov eax, esp
sub esp, 8
mov dword [esp + 0x40], esi
movups xmmword [eax], xmm0
call fcn.00449930
add esp, 0x18
cmp eax, 2
jne 0x4474fd
movups xmm0, xmmword [ebp + 0x14]
sub esp, 0x10
mov edx, edi
movsd xmm2, qword [ebp + 8]
mov eax, esp
mov ecx, esi
movups xmmword [eax], xmm0
call fcn.00447a20
add esp, 0x10
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.004fc7af
mov esp, ebp
pop ebp
ret
cmp byte [esp + 0xb], 0
mov ecx, dword [esp + 0x24]
jne 0x447524
test ecx, ecx
jle 0x447524
mov eax, dword [edi + 4]
mov esi, dword [esp + 0xc]
dec eax
add eax, ecx
cmp byte [eax], 0x30
jne 0x447528
dec ecx
dec eax
inc esi
test ecx, ecx
jg 0x447516
jmp 0x447528
mov esi, dword [esp + 0xc]
push ecx
mov ecx, edi
call fcn.00446e20
sub esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x9c]
mov eax, esi
pop edi
pop esi
xor ecx, esp
call fcn.004fc7af
mov esp, ebp
pop ebp
ret