Function at 0x1002f4b0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x158
mov eax, dword [0x1005f008]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, ecx
mov ecx, dword [0x1005f6a4]
push esi
mov dword [ebp - 0xf0], eax
push edi
mov esi, dword [eax + 0x174]
xor edi, edi
mov dword [ebp - 0xe0], esi
mov esi, eax
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0xd8], edi
lea ecx, [edi + 4]
mov al, byte [esi + 0x1c2]
mov byte [ebp - 0xd1], al
mov al, byte [esi + 0x1c4]
mov byte [ebp - 0xd9], al
lea eax, [ebp - 0xa4]
mov dword [eax - 4], edi
xorps xmm0, xmm0
mov dword [eax], edi
lea eax, [eax + 0x28]
mov dword [eax - 0x24], edi
mov dword [eax - 0x20], edi
movups xmmword [eax - 0x18], xmm0
mov dword [eax - 8], edi
mov dword [eax - 0x1c], edi
sub ecx, 1
jne 0x1002f523
xor eax, eax
mov dword [ebp - 0xf8], eax
cmp dword [esi + 0x54], eax
jle 0x1002fc8e
mov dword [ebp - 0xe4], eax
nop word [eax + eax]
xor edx, edx
xor ecx, ecx
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esi + 0x38]
and ecx, dword [esi + 0x3c]
or edx, ecx
je 0x1002f7ea
mov edx, dword [esi + 0x10]
xor eax, eax
add edx, dword [ebp - 0xe4]
cmp byte [ebp - 0xd1], al
mov dword [ebp - 0x108], edx
setg al
inc eax
xor esi, esi
mov dword [ebp - 0x110], eax
mov dword [ebp - 0xec], esi
nop dword [eax]
test esi, esi
jne 0x1002f5b9
mov al, byte [edx + 0x58]
jmp 0x1002f5bc
mov al, byte [edx + 0x59]
mov ecx, dword [ebp - 0xe0]
movzx eax, al
mov dword [ebp - 0x104], eax
mov ecx, dword [ecx + 0x10]
lea eax, [eax + eax*2]
mov dword [ebp - 0x100], ecx
mov dword [ebp - 0xe8], eax
mov eax, dword [ecx + eax*8]
mov ecx, eax
mov dword [ebp - 0xfc], eax
test eax, eax
jle 0x1002f651
mov edx, dword [ebp - 0xe8]
lea edi, [eax + eax*4]
mov eax, dword [ebp - 0x100]
mov esi, dword [eax + edx*8 + 8]
mov eax, ecx
mov edx, dword [ebp - 0x108]
cmp dword [esi + edi*8 - 0xc], 0
mov esi, dword [ebp - 0xec]
jne 0x1002f64b
mov edx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0x100]
mov esi, dword [eax + edx*8 + 8]
mov eax, ecx
mov edx, dword [ebp - 0x108]
cmp dword [esi + edi*8 - 8], 0
mov esi, dword [ebp - 0xec]
jne 0x1002f64b
mov edi, dword [ebp - 0x100]
lea ecx, [eax - 1]
mov eax, dword [ebp - 0xe8]
mov dword [edi + eax*8], ecx
mov edi, dword [ebp - 0xd8]
cmp ecx, 1
jne 0x1002f7cd
test dword [edx], 0x100
jne 0x1002f696
cmp byte [ebp - 0xd1], 0
jg 0x1002f677
movss xmm0, dword [edx + 0x44]
maxss xmm0, dword [edx + 0x48]
jmp 0x1002f68c
test esi, esi
jne 0x1002f687
movss xmm0, dword [edx + 0x40]
maxss xmm0, dword [edx + 0x48]
jmp 0x1002f68c
movss xmm0, dword [edx + 0x44]
comiss xmm0, dword [edx + 0x28]
ja 0x1002f7cd
cmp byte [ebp - 0xd9], 0
jle 0x1002f6b8
mov eax, dword [ebp - 0xf0]
movsx eax, byte [eax + 0x1c4]
cmp dword [ebp - 0xf8], eax
jge 0x1002f6b8
xor ecx, ecx
jmp 0x1002f6bd
mov ecx, 1
cmp byte [ebp - 0xd1], 0
jle 0x1002f6ce
test esi, esi
jne 0x1002f6ce
xor eax, eax
jmp 0x1002f6d3
mov eax, 2
add eax, ecx
lea esi, [ebp - 0xa8]
mov dword [ebp - 0x124], eax
lea eax, [eax + eax*4]
cmp dword [esi + eax*8 + 0x10], 0
lea esi, [esi + eax*8]
lea eax, [esi + 8]
lea ecx, [esi + 0xc]
mov dword [ebp - 0xfc], eax
mov dword [ebp - 0xf4], ecx
jne 0x1002f71b
mov dword [esi], 0x7f7fffff
mov dword [esi + 4], 0x7f7fffff
mov dword [eax], 0xff7fffff
mov dword [ecx], 0xff7fffff
jmp 0x1002f727
mov dword [ebp - 0xfc], eax
mov dword [ebp - 0xf4], ecx
mov eax, dword [ebp - 0x104]
mov ecx, eax
shr ecx, 5
and eax, 0x1f
mov dword [ebp - 0x104], eax
mov edx, dword [ebp - 0x104]
mov eax, dword [esi + ecx*4 + 0x14]
bts eax, edx
mov edx, dword [ebp - 0x108]
mov dword [esi + ecx*4 + 0x14], eax
inc dword [esi + 0x10]
mov eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x100]
movss xmm0, dword [esi]
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 0x1002f785
movss dword [esi], xmm4
movss xmm0, dword [esi + 4]
comiss xmm0, xmm1
jbe 0x1002f794
movss dword [esi + 4], xmm1
mov eax, dword [ebp - 0xfc]
comiss xmm2, dword [eax]
jbe 0x1002f7a3
movss dword [eax], xmm2
mov eax, dword [ebp - 0xf4]
comiss xmm3, dword [eax]
jbe 0x1002f7b2
movss dword [eax], xmm3
mov edi, dword [ebp - 0xd8]
mov eax, dword [ebp - 0x124]
bts edi, eax
mov esi, dword [ebp - 0xec]
mov dword [ebp - 0xd8], edi
inc esi
mov dword [ebp - 0xec], esi
cmp esi, dword [ebp - 0x110]
jl 0x1002f5b0
mov esi, dword [ebp - 0xf0]
mov byte [edx + 0x57], 0xff
mov eax, dword [ebp - 0xf8]
add dword [ebp - 0xe4], 0x68
inc eax
mov dword [ebp - 0xf8], eax
cmp eax, dword [esi + 0x54]
jl 0x1002f560
test edi, edi
je 0x1002fc8e
mov ecx, dword [ebp - 0xe0]
mov eax, dword [ebp - 0x10c]
add eax, 0x49fc
mov dword [ebp - 0xf4], eax
mov esi, dword [ecx + 4]
sub esi, 2
mov edi, dword [eax + 4]
cmp esi, edi
jle 0x1002f862
test edi, edi
je 0x1002f844
mov eax, edi
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
add ecx, edi
jmp 0x1002f849
mov ecx, 8
cmp ecx, esi
mov eax, esi
cmovg eax, ecx
mov ecx, dword [ebp - 0xf4]
push eax
call fcn.10028f20
mov eax, dword [ebp - 0xf4]
mov dword [eax], esi
mov edx, 2
mov eax, dword [ebp - 0x10c]
xorps xmm0, xmm0
movaps xmmword [ebp - 0xd0], xmm0
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xf4], edx
mov esi, dword [eax + 0x4a04]
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0xe8], esi
mov edi, dword [eax + 4]
mov dword [ebp - 0xd8], edi
lea eax, [edi - 1]
cmp eax, edx
jl 0x1002f92d
lea esi, [edi - 1]
mov eax, esi
and eax, 0x1f
mov dword [ebp - 0x110], eax
nop dword [eax]
mov eax, edx
mov edi, edx
or eax, 0x1f
sar edi, 5
cmp esi, eax
mov ecx, 0x1f
cmovle ecx, dword [ebp - 0x110]
xor esi, esi
inc ecx
xor eax, eax
bts esi, ecx
cmp ecx, 0x20
mov ecx, edx
cmovae eax, esi
xor edx, edx
xor esi, eax
and ecx, 0x1f
bts edx, ecx
dec esi
xor eax, eax
cmp ecx, 0x20
cmovae eax, edx
xor edx, eax
neg edx
and esi, edx
mov edx, dword [ebp - 0xf4]
or dword [ebp + edi*4 - 0xd0], esi
add edx, 0x20
mov edi, dword [ebp - 0xd8]
and edx, 0xffffffe0
mov dword [ebp - 0xf4], edx
lea esi, [edi - 1]
cmp edx, esi
jle 0x1002f8c0
mov esi, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xf0]
movzx edx, byte [eax + 0x1c8]
mov ecx, edx
and edx, 0x1f
shr ecx, 5
mov eax, dword [ebp + ecx*4 - 0xd0]
btr eax, edx
mov dword [ebp + ecx*4 - 0xd0], eax
xor eax, eax
cmp byte [ebp - 0xd1], al
setg al
add eax, 2
sub edi, eax
xor ecx, ecx
mov dword [ebp - 0xd8], edi
mov edi, dword [ebp - 0xf0]
movups xmm0, xmmword [edi + 0x140]
movups xmmword [ebp - 0x140], xmm0
movss xmm6, dword [ebp - 0x134]
movss xmm7, dword [ebp - 0x138]
movss xmm5, dword [ebp - 0x140]
mov dword [ebp - 0xec], ecx
nop dword [eax]
lea edx, [ecx + ecx*4]
shl edx, 3
mov eax, dword [ebp + edx - 0x98]
mov dword [ebp - 0xe4], eax
test eax, eax
je 0x1002fbd7
lea edi, [ebp - 0xa8]
add edi, edx
mov edx, ecx
movups xmm0, xmmword [edi]
movups xmmword [ebp - 0x120], xmm0
and edx, 1
je 0x1002f9e7
cmp byte [ebp - 0xd9], 0
jle 0x1002f9e7
movss xmm4, dword [ebp - 0x120]
jmp 0x1002f9f7
movss xmm4, dword [ebp - 0x120]
comiss xmm5, xmm4
ja 0x1002f9f7
movaps xmm4, xmm5
mov eax, ecx
and eax, 2
je 0x1002fa11
cmp byte [ebp - 0xd1], 0
jle 0x1002fa11
movss xmm3, dword [ebp - 0x11c]
jmp 0x1002fa29
movss xmm3, dword [ebp - 0x11c]
movss xmm0, dword [ebp - 0x13c]
comiss xmm0, xmm3
ja 0x1002fa29
movaps xmm3, xmm0
movss xmm2, dword [ebp - 0x118]
test edx, edx
je 0x1002fa3d
comiss xmm2, xmm7
jae 0x1002fa3d
movaps xmm2, xmm7
test eax, eax
je 0x1002fa62
mov eax, dword [ebp - 0xf0]
test dword [eax + 4], 0x20000
jne 0x1002fa62
movss xmm1, dword [ebp - 0x114]
comiss xmm1, xmm6
jae 0x1002fa6a
movaps xmm1, xmm6
jmp 0x1002fa6a
movss xmm1, dword [ebp - 0x114]
mov eax, dword [ebp - 0xd8]
xor edx, edx
sub eax, dword [edi + 0x10]
mov dword [ebp - 0xd8], eax
mov eax, dword [edi + 0x14]
not eax
and dword [ebp - 0xd0], eax
mov eax, dword [edi + 0x18]
not eax
and dword [ebp - 0xcc], eax
mov eax, dword [edi + 0x1c]
not eax
and dword [ebp - 0xc8], eax
mov eax, dword [edi + 0x20]
not eax
and dword [ebp - 0xc4], eax
mov eax, dword [edi + 0x24]
not eax
and dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0xe0]
cmp dword [eax + 4], edx
jle 0x1002fb87
mov dword [ebp - 0xf8], edx
nop word [eax + eax]
cmp dword [ebp - 0xe4], 0
je 0x1002fb81
mov esi, edx
mov ecx, edx
and ecx, 0x1f
sar esi, 5
mov eax, 1
shl eax, cl
test dword [edi + esi*4 + 0x14], eax
je 0x1002fb64
mov eax, dword [edi + esi*4 + 0x14]
btr eax, ecx
dec dword [ebp - 0xe4]
mov dword [edi + esi*4 + 0x14], eax
mov eax, dword [ebp - 0xe0]
mov esi, dword [ebp - 0xe8]
movss dword [ebp - 0x150], xmm4
movss dword [ebp - 0x14c], xmm3
mov ecx, dword [eax + 0x10]
add ecx, dword [ebp - 0xf8]
movss dword [ebp - 0x148], xmm2
movss dword [ebp - 0x144], xmm1
movups xmm0, xmmword [ebp - 0x150]
mov eax, dword [ecx + 8]
movups xmmword [eax], xmm0
mov eax, esi
add esi, 0x18
movups xmm0, xmmword [ecx]
mov dword [ebp - 0xe8], esi
movups xmmword [eax], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [eax + 0x10], xmm0
jmp 0x1002fb6a
mov esi, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xe0]
inc edx
add dword [ebp - 0xf8], 0x18
cmp edx, dword [eax + 4]
jl 0x1002fad0
mov ecx, dword [ebp - 0xec]
mov edi, dword [ebp - 0xf0]
cmp ecx, 1
jne 0x1002fbdf
cmp byte [ebp - 0xd1], 0
jle 0x1002fbdf
movzx eax, byte [edi + 0x1c8]
mov edx, esi
add esi, 0x18
mov dword [ebp - 0xe8], esi
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0xe0]
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 [ebp - 0xec]
movq qword [edx + 0x10], xmm0
inc ecx
jmp 0x1002f997
mov eax, dword [ebp - 0xe0]
jmp 0x1002fb8d
inc ecx
mov dword [ebp - 0xec], ecx
cmp ecx, 4
jl 0x1002f9a0
mov eax, dword [eax + 4]
xor edi, edi
test eax, eax
jle 0x1002fc62
mov dword [ebp - 0xe4], edi
nop
cmp dword [ebp - 0xd8], 0
je 0x1002fc62
mov eax, edi
mov ecx, edi
and ecx, 0x1f
sar eax, 5
mov edx, 1
shl edx, cl
test dword [ebp + eax*4 - 0xd0], edx
je 0x1002fc4d
mov eax, dword [ebp - 0xe0]
mov ecx, esi
add esi, 0x18
mov eax, dword [eax + 0x10]
add eax, dword [ebp - 0xe4]
dec dword [ebp - 0xd8]
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ecx + 0x10], xmm0
mov eax, dword [ebp - 0xe0]
inc edi
add dword [ebp - 0xe4], 0x18
mov eax, dword [eax + 4]
cmp edi, eax
jl 0x1002fc00
lea eax, [eax + eax*2]
lea eax, [eax*8 - 0x30]
push eax
mov eax, dword [ebp - 0x10c]
push dword [eax + 0x4a04]
mov eax, dword [ebp - 0xe0]
mov eax, dword [eax + 0x10]
add eax, 0x30
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.100377fa
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret