Function at 0x1008f490
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc4
mov eax, dword [0x100b9b80]
xor eax, esp
mov dword [esp + 0xc0], eax
mov eax, dword [0x100b9cac]
xorps xmm0, xmm0
push ebx
push esi
mov dword [esp + 0x2c], eax
push edi
mov edi, dword [ebp + 8]
movups xmmword [esp + 0x68], xmm0
mov dword [esp + 0x1c], edi
movups xmmword [esp + 0x80], xmm0
movzx eax, word [edi + 0x1dc]
mov ebx, dword [edi + 0x168]
mov ecx, eax
mov dword [esp + 0x34], eax
movzx eax, word [edi + 0x1e0]
mov dword [esp + 0x54], eax
mov dword [esp + 0x64], ecx
mov ecx, eax
xor eax, eax
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov eax, dword [edi + 0x40]
movups xmmword [esp + 0x98], xmm0
mov dword [esp + 0x5c], ecx
movups xmmword [esp + 0xb0], xmm0
lea eax, [eax*2 + 0x23]
sar eax, 5
shl eax, 2
mov dword [esp + 0x50], eax
movd xmm0, eax
lea esi, [eax + eax*4]
pshufd xmm0, xmm0, 0
movaps xmmword [esp + 0x40], xmm0
cmp esi, dword [ebx + 0x6148]
jle 0x1008f5b2
push esi
call fcn.1001a110
mov edi, eax
add esp, 4
mov eax, dword [ebx + 0x614c]
test eax, eax
je 0x1008f5a2
push dword [ebx + 0x6144]
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
push dword [ebx + 0x614c]
call fcn.1001a150
add esp, 0x10
mov dword [ebx + 0x614c], edi
mov edi, dword [esp + 0x1c]
mov dword [ebx + 0x6148], esi
push esi
push 0
push dword [ebx + 0x614c]
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebx + 0x614c]
add esp, 0xc
cmp dword [0x100bb420], 2
mov esi, dword [esp + 0x50]
jl 0x1008f623
movaps xmm1, xmmword [0x1009f990]
pmulld xmm1, xmmword [esp + 0x40]
movd xmm0, eax
pshufd xmm0, xmm0, 0
paddd xmm1, xmm0
movd dword [esp + 0x7c], xmm1
psrldq xmm1, 4
movd dword [esp + 0x94], xmm1
psrldq xmm1, 4
movd dword [esp + 0xac], xmm1
psrldq xmm1, 4
movd dword [esp + 0xc4], xmm1
jmp 0x1008f63c
lea ecx, [esp + 0x7c]
mov edx, 4
nop dword [eax]
mov dword [ecx], eax
lea ecx, [ecx + 0x18]
add eax, esi
sub edx, 1
jne 0x1008f630
mov eax, dword [ebx + 0x614c]
lea eax, [eax + esi*4]
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x20], eax
cmp dword [edi + 0x40], eax
jle 0x1008fd69
movups xmm5, xmmword [0x1009b5d0]
xor ebx, ebx
mov dword [esp + 0x3c], ebx
mov ecx, eax
mov edx, 1
and ecx, 0x1f
shl edx, cl
mov ecx, eax
mov eax, dword [edi + 0x30]
sar ecx, 5
test dword [eax + ecx*4], edx
je 0x1008f83a
mov edx, dword [esp + 0x1c]
xor eax, eax
mov edi, dword [edx + 0x10]
add edi, ebx
cmp word [esp + 0x34], ax
setg al
inc eax
xor ebx, ebx
mov dword [esp + 0x38], eax
nop dword [eax]
test ebx, ebx
jne 0x1008f6aa
movzx eax, word [edi + 0x5e]
jmp 0x1008f6ae
movzx eax, word [edi + 0x60]
movzx eax, ax
mov dword [esp + 0x2c], eax
lea esi, [eax + eax*2]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], esi
mov eax, dword [eax + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [eax + esi*8]
mov ecx, eax
test eax, eax
jle 0x1008f6ff
mov ecx, dword [esp + 0x24]
lea edx, [eax + eax*2]
add edx, edx
mov esi, dword [ecx + esi*8 + 8]
mov ecx, eax
cmp dword [esi + edx*8 - 0x10], 0
jne 0x1008f6fb
cmp dword [esi + edx*8 - 0xc], 0
jne 0x1008f6fb
mov edx, dword [esp + 0x24]
lea ecx, [eax - 1]
mov eax, dword [esp + 0x14]
mov dword [edx + eax*8], ecx
mov edx, dword [esp + 0x1c]
cmp ecx, 1
jne 0x1008f81c
test dword [edi], 0x100
mov esi, dword [esp + 0x34]
jne 0x1008f744
test si, si
jg 0x1008f725
movss xmm0, dword [edi + 0x44]
maxss xmm0, dword [edi + 0x48]
jmp 0x1008f73a
test ebx, ebx
jne 0x1008f735
movss xmm0, dword [edi + 0x40]
maxss xmm0, dword [edi + 0x48]
jmp 0x1008f73a
movss xmm0, dword [edi + 0x44]
comiss xmm0, dword [edi + 0x28]
ja 0x1008f81c
cmp word [esp + 0x54], 0
jle 0x1008f75d
movsx eax, word [edx + 0x1e0]
cmp dword [esp + 0x20], eax
jge 0x1008f75d
xor ecx, ecx
jmp 0x1008f762
mov ecx, 1
test si, si
jle 0x1008f76f
test ebx, ebx
jne 0x1008f76f
xor eax, eax
jmp 0x1008f774
mov eax, 2
add eax, ecx
mov dword [esp + 0x58], eax
lea esi, [eax + eax*2]
cmp dword [esp + esi*8 + 0x78], 0
jne 0x1008f789
movups xmmword [esp + esi*8 + 0x68], xmm5
mov eax, dword [esp + 0x2c]
mov ecx, eax
mov edx, dword [esp + esi*8 + 0x7c]
and eax, 0x1f
inc dword [esp + esi*8 + 0x78]
movss xmm0, dword [esp + esi*8 + 0x68]
shr ecx, 5
mov dword [esp + 0x2c], eax
mov eax, dword [edx + ecx*4]
mov edx, dword [esp + 0x2c]
bts eax, edx
mov edx, dword [esp + esi*8 + 0x7c]
mov dword [edx + ecx*4], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + eax*8 + 8]
movss xmm4, dword [eax]
comiss xmm0, xmm4
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss xmm3, dword [eax + 0xc]
jbe 0x1008f7e2
movss dword [esp + esi*8 + 0x68], xmm4
movss xmm0, dword [esp + esi*8 + 0x6c]
comiss xmm0, xmm1
jbe 0x1008f7f3
movss dword [esp + esi*8 + 0x6c], xmm1
comiss xmm2, dword [esp + esi*8 + 0x70]
jbe 0x1008f800
movss dword [esp + esi*8 + 0x70], xmm2
comiss xmm3, dword [esp + esi*8 + 0x74]
jbe 0x1008f80d
movss dword [esp + esi*8 + 0x74], xmm3
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x58]
bts ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x1c]
inc ebx
cmp ebx, dword [esp + 0x38]
jl 0x1008f6a0
mov ebx, dword [esp + 0x3c]
mov eax, 0xffff
mov word [edi + 0x5c], ax
mov edi, edx
mov eax, dword [esp + 0x20]
add ebx, 0x70
inc eax
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x20], eax
cmp eax, dword [edi + 0x40]
jl 0x1008f665
cmp dword [esp + 0x18], 0
je 0x1008fd69
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov edi, dword [edi + 4]
mov ecx, dword [edx + 0x4dac]
sub edi, 2
cmp edi, ecx
jle 0x1008f8ee
test ecx, ecx
je 0x1008f889
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x30]
sar eax, 1
add eax, ecx
jmp 0x1008f88e
mov eax, 8
cmp eax, edi
mov esi, edi
cmovg esi, eax
cmp esi, ecx
jle 0x1008f8ee
lea eax, [esi + esi*2]
shl eax, 3
push eax
call fcn.1001a110
mov edx, dword [esp + 0x34]
mov ebx, eax
add esp, 4
mov eax, dword [edx + 0x4db0]
test eax, eax
je 0x1008f8e2
mov ecx, dword [edx + 0x4da8]
lea ecx, [ecx + ecx*2]
shl ecx, 3
push ecx
push eax
push ebx
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x3c]
push dword [eax + 0x4db0]
call fcn.1001a150
mov edx, dword [esp + 0x40]
add esp, 0x10
mov dword [edx + 0x4db0], ebx
mov dword [edx + 0x4dac], esi
mov ecx, dword [esp + 0x10]
mov dword [edx + 0x4da8], edi
mov ebx, dword [edx + 0x4db0]
mov dword [esp + 0x14], ebx
mov edx, dword [ecx + 4]
dec edx
mov dword [esp + 0x38], edx
cmp edx, 2
jl 0x1008f97d
mov esi, 0x1f
mov ebx, 2
nop dword [eax]
mov ecx, edx
mov eax, ebx
and ecx, 0x1f
or eax, 0x1f
mov edi, ebx
and edi, 0x1f
cmp edx, eax
cmovg ecx, esi
xor edx, edx
inc ecx
xor eax, eax
bts edx, ecx
mov esi, ebx
sar esi, 5
cmp ecx, 0x20
cmovae eax, edx
xor ecx, ecx
xor edx, eax
bts ecx, edi
dec edx
xor eax, eax
cmp edi, 0x20
mov edi, dword [esp + 0x28]
cmovae eax, ecx
add ebx, 0x20
xor ecx, eax
and ebx, 0xffffffe0
neg ecx
and edx, ecx
or dword [edi + esi*4], edx
mov esi, 0x1f
mov edx, dword [esp + 0x38]
cmp ebx, edx
jle 0x1008f920
mov ebx, dword [esp + 0x14]
jmp 0x1008f981
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x1c]
movups xmm2, xmmword [0x100b16c0]
movzx edx, word [esi + 0x1e8]
mov ecx, edx
and edx, 0x1f
shr ecx, 5
mov eax, dword [edi + ecx*4]
btr eax, edx
mov dword [edi + ecx*4], eax
xor eax, eax
cmp word [esp + 0x34], ax
mov ecx, dword [esp + 0x10]
movups xmm0, xmmword [esi + 0x134]
setg al
add eax, 2
mov edx, dword [ecx + 4]
movups xmmword [esp + 0x40], xmm0
sub edx, eax
xor esi, esi
movss xmm3, dword [esp + 0x4c]
movss xmm4, dword [esp + 0x48]
movss xmm6, dword [esp + 0x44]
movss xmm5, dword [esp + 0x40]
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], esi
nop dword [eax + eax]
lea edi, [esi + esi*2]
shl edi, 3
mov dword [esp + 0x20], edi
mov eax, dword [esp + edi + 0x78]
mov dword [esp + 0x24], eax
test eax, eax
je 0x1008fc8d
movups xmm0, xmmword [esp + edi + 0x68]
mov ecx, esi
movups xmmword [esp + 0x40], xmm0
and ecx, 1
je 0x1008fa23
cmp word [esp + 0x5c], 0
jg 0x1008fa33
movss xmm0, dword [esp + 0x40]
minss xmm0, xmm5
movss dword [esp + 0x40], xmm0
and esi, 2
je 0x1008fa40
cmp word [esp + 0x34], 0
jg 0x1008fa50
movss xmm0, dword [esp + 0x44]
minss xmm0, xmm6
movss dword [esp + 0x44], xmm0
test ecx, ecx
je 0x1008fa64
movss xmm0, dword [esp + 0x48]
maxss xmm0, xmm4
movss dword [esp + 0x48], xmm0
test esi, esi
je 0x1008fa85
mov ecx, dword [esp + 0x1c]
test dword [ecx + 4], 0x20000
jne 0x1008fa85
movss xmm0, dword [esp + 0x4c]
maxss xmm0, xmm3
movss dword [esp + 0x4c], xmm0
mov esi, dword [esp + 0x50]
sub edx, eax
sar esi, 2
xor ecx, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x60], esi
test esi, esi
jle 0x1008fbfb
cmp esi, 2
jb 0x1008fbda
mov edi, dword [esp + edi + 0x7c]
lea eax, [esi - 1]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
add edx, 0xfffffffc
lea eax, [edi + eax*4]
lea edx, [edx + esi*4]
cmp dword [esp + 0x28], eax
ja 0x1008facf
cmp edx, edi
jae 0x1008fbd6
cmp esi, 0x10
jb 0x1008fb95
mov eax, esi
and eax, 0x8000000f
jns 0x1008fae6
dec eax
or eax, 0xfffffff0
inc eax
mov ebx, dword [esp + 0x28]
mov edx, esi
sub edx, eax
mov eax, 0xfffffff0
sub eax, ebx
mov dword [esp + 0x38], edx
mov esi, edx
mov dword [esp + 0x58], eax
lea edx, [ebx + 0x20]
mov eax, 0x10
sub eax, ebx
mov dword [esp + 0x54], eax
mov eax, 0xffffffe0
sub eax, ebx
lea ebx, [edi + 0x20]
mov dword [esp + 0x3c], eax
nop dword [eax + eax]
movups xmm0, xmmword [edx - 0x20]
add eax, edx
lea ebx, [ebx + 0x40]
add ecx, 0x10
movups xmm1, xmmword [eax + edi]
mov eax, dword [esp + 0x58]
add eax, edx
andnps xmm1, xmm2
andps xmm1, xmm0
movups xmmword [edx - 0x20], xmm1
movups xmm1, xmmword [eax + edi]
mov eax, dword [esp + 0x54]
movups xmm0, xmmword [edx - 0x10]
add eax, edx
andnps xmm1, xmm2
andps xmm1, xmm0
movups xmmword [edx - 0x10], xmm1
movups xmm1, xmmword [ebx - 0x40]
movups xmm0, xmmword [edx]
andnps xmm1, xmm2
andps xmm1, xmm0
movups xmmword [edx], xmm1
movups xmm1, xmmword [eax + edi]
mov eax, dword [esp + 0x3c]
movups xmm0, xmmword [edx + 0x10]
andnps xmm1, xmm2
andps xmm1, xmm0
movups xmmword [edx + 0x10], xmm1
add edx, 0x40
cmp ecx, esi
jl 0x1008fb20
mov esi, dword [esp + 0x60]
mov eax, esi
mov ebx, dword [esp + 0x14]
and al, 0xf
cmp al, 2
jb 0x1008fbcc
mov eax, esi
and eax, 0x80000001
jns 0x1008fba3
dec eax
or eax, 0xfffffffe
inc eax
mov edx, esi
sub edx, eax
mov eax, dword [esp + 0x28]
nop dword [eax + eax]
movq xmm1, qword [edi + ecx*4]
movq xmm0, qword [eax + ecx*4]
andnps xmm1, xmm2
andps xmm1, xmm0
movq qword [eax + ecx*4], xmm1
add ecx, 2
cmp ecx, edx
jl 0x1008fbb0
mov edi, dword [esp + 0x20]
cmp ecx, esi
jge 0x1008fbf7
jmp 0x1008fbda
mov edi, dword [esp + 0x20]
mov edx, dword [esp + edi + 0x7c]
mov edi, dword [esp + 0x28]
mov eax, dword [edx + ecx*4]
not eax
and dword [edi + ecx*4], eax
inc ecx
cmp ecx, esi
jl 0x1008fbe2
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp dword [ecx + 4], edx
jle 0x1008fc85
xor ebx, ebx
test eax, eax
je 0x1008fc81
mov eax, dword [esp + edi + 0x7c]
mov esi, edx
sar esi, 5
mov ecx, edx
and ecx, 0x1f
mov edi, dword [eax + esi*4]
mov eax, 1
shl eax, cl
test edi, eax
je 0x1008fc6c
movups xmm0, xmmword [esp + 0x40]
btr edi, ecx
dec dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + ecx + 0x7c]
mov dword [eax + esi*4], edi
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx + ebx + 8]
movups xmmword [eax], xmm0
mov eax, esi
add esi, 0x18
movups xmm0, xmmword [ecx + ebx]
mov dword [esp + 0x14], esi
movups xmmword [eax], xmm0
movq xmm0, qword [ecx + ebx + 0x10]
movq qword [eax + 0x10], xmm0
mov ecx, dword [esp + 0x10]
inc edx
mov eax, dword [esp + 0x24]
add ebx, 0x18
mov edi, dword [esp + 0x20]
cmp edx, dword [ecx + 4]
jl 0x1008fc08
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x2c]
cmp esi, 1
jne 0x1008fcd8
cmp word [esp + 0x64], 0
jle 0x1008fcd8
mov eax, dword [esp + 0x1c]
mov edx, ebx
add ebx, 0x18
inc esi
mov dword [esp + 0x14], ebx
movzx eax, word [eax + 0x1e8]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x10]
movups xmm0, xmmword [eax + ecx*8]
movups xmmword [edx], xmm0
movq xmm0, qword [eax + ecx*8 + 0x10]
mov ecx, dword [esp + 0x10]
movq qword [edx + 0x10], xmm0
mov edx, dword [esp + 0x18]
jmp 0x1008f9e4
inc esi
mov dword [esp + 0x2c], esi
cmp esi, 4
jl 0x1008f9f0
mov eax, dword [ecx + 4]
xor esi, esi
test eax, eax
jle 0x1008fd45
xor edi, edi
test edx, edx
je 0x1008fd45
mov ecx, esi
mov edx, 1
and ecx, 0x1f
mov eax, esi
shl edx, cl
mov ecx, dword [esp + 0x28]
sar eax, 5
test dword [ecx + eax*4], edx
mov edx, dword [esp + 0x18]
je 0x1008fd36
mov eax, dword [esp + 0x10]
mov ecx, ebx
add ebx, 0x18
dec edx
mov dword [esp + 0x18], edx
mov eax, dword [eax + 0x10]
movups xmm0, xmmword [eax + edi]
movups xmmword [ecx], xmm0
movq xmm0, qword [eax + edi + 0x10]
movq qword [ecx + 0x10], xmm0
mov ecx, dword [esp + 0x10]
inc esi
add edi, 0x18
mov eax, dword [ecx + 4]
cmp esi, eax
jl 0x1008fcf1
lea eax, [eax + eax*2]
lea eax, [eax*8 - 0x30]
push eax
mov eax, dword [esp + 0x34]
push dword [eax + 0x4db0]
mov eax, dword [ecx + 0x10]
add eax, 0x30
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0xcc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10092be1
mov esp, ebp
pop ebp
ret