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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x130
mov eax, dword [0x1008c00c]
xor eax, esp
mov dword [esp + 0x12c], eax
mov eax, dword [0x10090d48]
push esi
push edi
mov edi, ecx
mov dword [esp + 0x58], eax
xor esi, esi
mov dword [esp + 0x24], edi
push 4
mov dword [esp + 0x48], esi
mov eax, dword [edi + 0x174]
mov dword [esp + 0x24], eax
mov al, byte [edi + 0x1c6]
mov byte [esp + 0x13], al
mov al, byte [edi + 0x1c8]
lea edi, [esp + 0x94]
mov dword [esp + 0x20], esi
mov byte [esp + 0x1f], al
pop esi
mov ecx, edi
call fcn.1004a79d
add edi, 0x28
sub esi, 1
jne 0x1004a1c9
mov edi, dword [esp + 0x24]
mov eax, esi
mov dword [esp + 0x10], eax
cmp dword [edi + 0x54], esi
jle 0x1004a789
mov dword [esp + 0x30], esi
xor edx, edx
add eax, esi
xor ecx, ecx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [edi + 0x38]
and ecx, dword [edi + 0x3c]
or edx, ecx
je 0x1004a3e2
mov edx, dword [edi + 0x10]
xor eax, eax
add edx, dword [esp + 0x30]
cmp byte [esp + 0xf], al
mov dword [esp + 0x38], edx
setg al
mov dword [esp + 0x14], esi
inc eax
mov dword [esp + 0x3c], eax
mov eax, esi
test eax, eax
jne 0x1004a23c
mov al, byte [edx + 0x58]
jmp 0x1004a23f
mov al, byte [edx + 0x59]
movzx eax, al
imul ecx, eax, 0x18
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
add ecx, dword [eax + 0x10]
mov dword [esp + 0x28], ecx
mov eax, dword [ecx]
mov ecx, eax
test eax, eax
jle 0x1004a2a5
imul ecx, eax, 0x30
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x40]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x34], ecx
mov ecx, eax
mov edx, dword [esp + 0x34]
cmp dword [edi + edx - 0x10], esi
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
jne 0x1004a2a5
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x34]
cmp dword [edi + edx - 0xc], esi
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x24]
jne 0x1004a2a5
lea ecx, [eax - 1]
mov eax, dword [esp + 0x28]
mov dword [eax], ecx
cmp ecx, 1
jne 0x1004a3cb
test dword [edx], 0x100
mov ecx, dword [esp + 0x14]
jne 0x1004a2e7
cmp byte [esp + 0xf], 0
jg 0x1004a2c8
movss xmm0, dword [edx + 0x44]
jmp 0x1004a2d1
test ecx, ecx
jne 0x1004a2d8
movss xmm0, dword [edx + 0x40]
maxss xmm0, dword [edx + 0x48]
jmp 0x1004a2dd
movss xmm0, dword [edx + 0x44]
comiss xmm0, dword [edx + 0x28]
ja 0x1004a3cb
cmp byte [esp + 0x1b], 0
jle 0x1004a2ff
movsx eax, byte [edi + 0x1c8]
cmp dword [esp + 0x10], eax
jge 0x1004a2ff
mov edi, esi
jmp 0x1004a302
xor edi, edi
inc edi
cmp byte [esp + 0xf], 0
jle 0x1004a311
test ecx, ecx
jne 0x1004a311
mov eax, esi
jmp 0x1004a314
push 2
pop eax
add eax, edi
lea edi, [esp + 0x90]
mov dword [esp + 0x40], eax
imul eax, eax, 0x28
add edi, eax
mov dword [esp + 0x34], edi
cmp dword [edi + 0x10], esi
jne 0x1004a347
movaps xmm0, xmmword [0x10089020]
lea esi, [esp + 0x6c]
movups xmmword [esp + 0x6c], xmm0
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
mov ecx, eax
and eax, 0x1f
shr ecx, 5
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x2c]
push 0
mov eax, dword [edi + ecx*4 + 0x14]
bts eax, esi
mov dword [edi + ecx*4 + 0x14], eax
inc dword [edi + 0x10]
mov eax, dword [esp + 0x2c]
movss xmm0, dword [edi]
pop esi
mov eax, dword [eax + 8]
movss xmm4, dword [eax]
comiss xmm0, xmm4
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss xmm3, dword [eax + 0xc]
jbe 0x1004a393
movss dword [edi], xmm4
movss xmm0, dword [edi + 4]
comiss xmm0, xmm1
jbe 0x1004a3a2
movss dword [edi + 4], xmm1
comiss xmm2, dword [edi + 8]
jbe 0x1004a3ad
movss dword [edi + 8], xmm2
comiss xmm3, dword [edi + 0xc]
jbe 0x1004a3b8
movss dword [edi + 0xc], xmm3
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x40]
bts eax, ecx
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x3c]
jl 0x1004a233
mov byte [edx + 0x57], 0xff
mov eax, dword [esp + 0x10]
add dword [esp + 0x30], 0x68
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [edi + 0x54]
jl 0x1004a1ef
cmp dword [esp + 0x1c], 0
je 0x1004a789
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x58]
mov eax, dword [eax + 4]
sub eax, 2
lea ecx, [edi + 0x4a10]
push eax
call fcn.10040c48
mov eax, dword [edi + 0x4a18]
lea edi, [esp + 0x7c]
mov dword [esp + 0x14], eax
xor eax, eax
stosd dword es:[edi], eax
push 2
pop edx
mov dword [esp + 0x38], edx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [esp + 0x20]
mov edi, dword [eax + 4]
mov dword [esp + 0x10], edi
lea eax, [edi - 1]
mov dword [esp + 0x34], eax
cmp eax, edx
jl 0x1004a4c0
mov ecx, eax
and ecx, 0x1f
mov dword [esp + 0x3c], ecx
jmp 0x1004a45d
xor esi, esi
mov eax, edx
mov edi, edx
or eax, 0x1f
sar edi, 5
cmp dword [esp + 0x34], eax
push 0x1f
pop eax
cmovg ecx, eax
inc esi
add ecx, esi
xor eax, eax
xor esi, esi
bts esi, ecx
cmp ecx, 0x20
mov ecx, edx
cmovae eax, esi
xor edx, edx
xor esi, eax
push 0x1f
pop eax
and ecx, eax
dec esi
xor eax, eax
add ecx, eax
bts edx, ecx
cmp ecx, 0x20
mov ecx, dword [esp + 0x3c]
cmovae eax, edx
xor edx, eax
neg edx
and esi, edx
mov edx, dword [esp + 0x38]
or dword [esp + edi*4 + 0x7c], esi
add edx, 0x20
and edx, 0xffffffe0
mov dword [esp + 0x38], edx
cmp edx, dword [esp + 0x34]
jle 0x1004a45b
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
push 0x1f
movzx edx, byte [eax + 0x1cc]
mov ecx, edx
shr ecx, 5
pop eax
and edx, eax
mov eax, dword [esp + ecx*4 + 0x7c]
btr eax, edx
mov dword [esp + ecx*4 + 0x7c], eax
xor eax, eax
cmp byte [esp + 0xf], al
setg al
add eax, 2
sub edi, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], edi
xor edx, edx
lea edi, [esp + 0x5c]
mov ecx, edx
mov dword [esp + 0x2c], ecx
lea esi, [eax + 0x140]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movss xmm5, dword [esp + 0x60]
movss xmm4, dword [esp + 0x5c]
imul esi, ecx, 0x28
mov edi, dword [esp + esi + 0xa0]
mov dword [esp + 0x1c], edi
test edi, edi
je 0x1004a6b6
lea edi, [esp + 0x90]
add esi, edi
lea edi, [esp + 0x48]
mov dword [esp + 0x28], esi
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, ecx
and esi, 1
je 0x1004a559
cmp byte [esp + 0x1b], 0
jle 0x1004a559
movss xmm3, dword [esp + 0x48]
jmp 0x1004a56d
movss xmm3, dword [esp + 0x48]
comiss xmm4, xmm3
ja 0x1004a56d
movaps xmm3, xmm4
movss dword [esp + 0x48], xmm3
and ecx, 2
je 0x1004a581
cmp byte [esp + 0xf], 0
jle 0x1004a581
movss xmm2, dword [esp + 0x4c]
jmp 0x1004a595
movss xmm2, dword [esp + 0x4c]
comiss xmm5, xmm2
ja 0x1004a595
movaps xmm2, xmm5
movss dword [esp + 0x4c], xmm2
movss xmm1, dword [esp + 0x50]
test esi, esi
je 0x1004a5b2
comiss xmm1, dword [esp + 0x64]
jae 0x1004a5b2
movss xmm1, dword [esp + 0x64]
movss dword [esp + 0x50], xmm1
test ecx, ecx
je 0x1004a5da
test dword [eax + 4], 0x20000
jne 0x1004a5da
movss xmm0, dword [esp + 0x54]
comiss xmm0, dword [esp + 0x68]
jae 0x1004a5e0
movss xmm0, dword [esp + 0x68]
movss dword [esp + 0x54], xmm0
jmp 0x1004a5e0
movss xmm0, dword [esp + 0x54]
mov esi, dword [esp + 0x28]
mov ecx, edx
mov eax, dword [esp + 0x10]
sub eax, dword [esi + 0x10]
add esi, 0x14
mov dword [esp + 0x10], eax
mov eax, dword [esi]
lea esi, [esi + 4]
not eax
and dword [esp + ecx*4 + 0x7c], eax
inc ecx
cmp ecx, 5
jl 0x1004a5f4
mov esi, dword [esp + 0x20]
mov dword [esp + 0x3c], edx
cmp dword [esi + 4], edx
jle 0x1004a6ae
mov dword [esp + 0x30], edx
cmp dword [esp + 0x1c], 0
je 0x1004a6ac
mov esi, dword [esp + 0x28]
mov ecx, edx
push 0x1f
pop eax
and ecx, eax
mov edi, edx
xor eax, eax
sar edi, 5
inc eax
shl eax, cl
test dword [esi + edi*4 + 0x14], eax
mov esi, dword [esp + 0x20]
je 0x1004a69d
mov eax, dword [esp + 0x28]
movss dword [esp + 0x6c], xmm3
movss dword [esp + 0x70], xmm2
movss dword [esp + 0x74], xmm1
mov eax, dword [eax + edi*4 + 0x14]
btr eax, ecx
movss dword [esp + 0x78], xmm0
mov ecx, dword [esp + 0x28]
dec dword [esp + 0x1c]
push 6
mov dword [ecx + edi*4 + 0x14], eax
mov eax, dword [esi + 0x10]
lea esi, [esp + 0x70]
add eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
mov edi, dword [eax + 8]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, ecx
mov esi, eax
add ecx, 0x18
mov dword [esp + 0x18], ecx
pop ecx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x20]
add dword [esp + 0x30], 0x18
inc edx
cmp edx, dword [esi + 4]
jl 0x1004a61a
xor edx, edx
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
cmp ecx, 1
jne 0x1004a6e9
cmp byte [esp + 0xf], 0
jle 0x1004a6e9
movzx eax, byte [eax + 0x1cc]
mov ecx, dword [esp + 0x14]
mov edi, ecx
add ecx, 0x18
imul esi, eax, 0x18
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], ecx
push 6
pop ecx
add esi, dword [eax + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x2c], ecx
cmp ecx, 4
jl 0x1004a518
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 4]
test eax, eax
jle 0x1004a769
mov esi, dword [esp + 0x10]
mov dword [esp + 0x1c], edx
test esi, esi
je 0x1004a769
mov ecx, edx
xor edx, edx
push 0x1f
pop eax
and ecx, eax
inc edx
mov eax, dword [esp + 0x44]
sar eax, 5
shl edx, cl
test dword [esp + eax*4 + 0x7c], edx
je 0x1004a750
mov eax, dword [esp + 0x14]
mov edi, eax
add eax, 0x18
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
push 6
pop ecx
mov esi, dword [eax + 0x10]
add esi, dword [esp + 0x1c]
dec dword [esp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x44]
add dword [esp + 0x1c], 0x18
inc edx
mov dword [esp + 0x44], edx
mov eax, dword [ecx + 4]
cmp edx, eax
jl 0x1004a70e
imul eax, eax, 0x18
sub eax, 0x30
push eax
mov eax, dword [esp + 0x5c]
push dword [eax + 0x4a18]
mov eax, dword [ecx + 0x10]
add eax, 0x30
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x134]
pop edi
pop esi
xor ecx, esp
call fcn.1006dac1
mov esp, ebp
pop ebp
ret