Function at 0x100f6820
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov edi, dword [ecx + 0xc]
mov eax, edi
inc eax
jne 0x100f6840
push 1
call fcn.100aa980
add esp, 4
mov esi, edx
jmp 0x100f6b79
mov ebx, dword [ecx]
mov edx, ecx
mov dword [esp], edx
lea ecx, [ebx + 1]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ecx
shr ecx, 3
lea esi, [ecx*8]
sub esi, ecx
cmp ebx, 8
cmovb esi, ebx
mov ecx, esi
shr ecx, 1
cmp eax, ecx
jbe 0x100f689a
inc esi
lea ecx, [esp + 0x28]
mov edx, 0x2c
cmp eax, esi
cmova esi, eax
push esi
push 0x10
call fcn.100815c0
add esp, 8
cmp dword [esp + 0x28], 0
je 0x100f6b83
mov esi, dword [esp + 0x30]
jmp 0x100f6b79
mov ebp, dword [edx + 4]
movdqa xmm0, xmmword [0x1012fee0]
mov edx, dword [esp + 0x10]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x24], esi
mov dword [esp + 0xc], edi
test cl, 1
je 0x100f68c5
nop word [eax + eax]
add eax, 0xf
jb 0x100f68e7
cmp eax, edx
jae 0x100f68e7
pxor xmm1, xmm1
mov cl, 1
pcmpgtb xmm1, xmmword [ebp + eax]
por xmm1, xmm0
movdqa xmmword [ebp + eax], xmm1
inc eax
test cl, 1
jne 0x100f68c0
jmp 0x100f68c5
cmp edx, 0x10
jae 0x100f690d
lea eax, [ebp + 0x10]
push edx
push ebp
push eax
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
cmp ebx, 0xffffffff
jne 0x100f6923
mov eax, dword [esp]
mov ecx, dword [esp + 0xc]
xor edx, edx
jmp 0x100f6b6f
movq xmm0, qword [ebp]
movq xmm1, qword [ebp + 8]
movq qword [ebp + edx + 8], xmm1
movq qword [ebp + edx], xmm0
lea eax, [ebp - 0x2c]
xor ecx, ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], eax
jmp 0x100f695f
mov ecx, dword [esp + 8]
and dl, 0x7f
lea eax, [ecx - 0x10]
mov byte [ebp + ecx], dl
and eax, ebx
mov byte [eax + ebp + 0x10], dl
cmp ecx, ebx
lea ecx, [ecx + 1]
je 0x100f6b64
cmp byte [ebp + ecx], 0x80
jne 0x100f6954
mov eax, ecx
mov esi, dword [esp + 0x10]
mov dword [esp + 8], ecx
not eax
imul eax, eax, 0x2c
add eax, ebp
mov dword [esp + 0x14], eax
mov eax, ecx
neg eax
imul eax, eax, 0x2c
lea edx, [esi + eax]
lea eax, [esi + eax + 8]
mov dword [esp + 0x20], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
mov edi, dword [eax]
test edi, edi
je 0x100f6a00
nop dword [eax + eax]
mov eax, dword [esp + 0x20]
mov ebx, 0xcbf29ce4
mov ebp, 0x1b3
mov esi, dword [eax]
mov eax, 0x84222325
nop word cs:[eax + eax]
nop
movzx ecx, byte [esi]
imul ebx, ebx, 0x1b3
inc esi
xor ecx, eax
mov eax, ecx
shl ecx, 8
mul ebp
add ecx, edx
add ebx, ecx
dec edi
jne 0x100f69c0
xor eax, 0xff
mul ebp
mov ebp, dword [esp + 0x18]
sub edx, ebx
mov ebx, dword [esp + 0x1c]
shld edx, eax, 7
jmp 0x100f6a07
mov dl, 0x43
mov eax, 0x8602eb6e
and eax, ebx
movdqu xmm0, xmmword [ebp + eax]
mov esi, eax
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x100f6a35
mov edi, 0x10
mov esi, eax
add esi, edi
add edi, 0x10
and esi, ebx
movdqu xmm0, xmmword [ebp + esi]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x100f6a20
bsf cx, cx
movzx ecx, cx
add ecx, esi
and ecx, ebx
cmp byte [ebp + ecx], 0
js 0x100f6a57
movdqa xmm0, xmmword [ebp]
pmovmskb ecx, xmm0
bsf cx, cx
movzx ecx, cx
mov esi, dword [esp + 8]
mov edi, ecx
sub edi, eax
sub esi, eax
xor edi, esi
and edi, ebx
cmp edi, 0xf
jbe 0x100f6940
mov al, byte [ebp + ecx]
and dl, 0x7f
lea esi, [ecx - 0x10]
mov byte [ebp + ecx], dl
not ecx
and esi, ebx
imul ecx, ecx, 0x2c
mov byte [esi + ebp + 0x10], dl
cmp al, 0xff
lea eax, [ebp + ecx]
je 0x100f6b10
mov esi, dword [esp + 0x14]
movups xmm1, xmmword [eax]
movups xmm0, xmmword [esi]
movups xmmword [esi], xmm1
movups xmmword [eax], xmm0
movups xmm0, xmmword [esi + 0x10]
movups xmm1, xmmword [ebp + ecx + 0x10]
movups xmmword [esi + 0x10], xmm1
movups xmmword [ebp + ecx + 0x10], xmm0
movq xmm0, qword [esi + 0x20]
movq xmm1, qword [ebp + ecx + 0x20]
movq qword [esi + 0x20], xmm1
movq qword [ebp + ecx + 0x20], xmm0
mov dl, byte [esi + 0x28]
mov dh, byte [ebp + ecx + 0x28]
mov byte [esi + 0x28], dh
mov byte [ebp + ecx + 0x28], dl
mov cl, byte [esi + 0x29]
mov dl, byte [eax + 0x29]
mov byte [esi + 0x29], dl
mov byte [eax + 0x29], cl
mov cl, byte [esi + 0x2a]
mov dl, byte [eax + 0x2a]
mov byte [esi + 0x2a], dl
mov byte [eax + 0x2a], cl
mov cl, byte [esi + 0x2b]
mov dl, byte [eax + 0x2b]
mov byte [esi + 0x2b], dl
mov byte [eax + 0x2b], cl
mov eax, dword [esp + 4]
mov edi, dword [eax]
test edi, edi
jne 0x100f69a0
jmp 0x100f6a00
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x14]
lea ecx, [edx - 0x10]
mov byte [ebp + edx], 0xff
and ecx, ebx
mov byte [ecx + ebp + 0x10], 0xff
mov ecx, dword [esi + 0x28]
mov dword [eax + 0x28], ecx
mov ecx, edx
movsd xmm0, qword [esi + 0x20]
movsd qword [eax + 0x20], xmm0
movsd xmm0, qword [esi + 0x18]
movsd qword [eax + 0x18], xmm0
movsd xmm0, qword [esi + 0x10]
movsd qword [eax + 0x10], xmm0
movq xmm0, qword [esi]
movq xmm1, qword [esi + 8]
movq qword [eax + 8], xmm1
movq qword [eax], xmm0
jmp 0x100f6954
mov eax, dword [esp]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x24]
sub edx, ecx
mov dword [eax + 8], edx
mov esi, 0x80000001
mov eax, esi
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
sub eax, edi
cmp ebx, 0xffffffff
je 0x100f6d29
mov edi, dword [esp]
xor edx, edx
mov dword [esp + 0xc], eax
mov dword [esp + 4], ecx
mov dword [esp + 0x18], esi
mov ebp, dword [edi + 4]
lea edi, [ebp - 0x2c]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], edi
jmp 0x100f6c37
mov edi, dword [esp + 8]
lea ecx, [edx - 0x10]
shr eax, 0x19
and ecx, ebp
mov ebp, dword [esp + 0x14]
mov byte [esi + edx], al
not edx
mov byte [ecx + esi + 0x10], al
imul ecx, edx, 0x2c
mov eax, edi
not eax
imul eax, eax, 0x2c
mov edx, dword [ebp + eax + 0x28]
mov dword [esi + ecx + 0x28], edx
mov edx, edi
mov edi, dword [esp + 0x20]
movsd xmm0, qword [ebp + eax + 0x20]
movsd qword [esi + ecx + 0x20], xmm0
movsd xmm0, qword [ebp + eax + 0x18]
movsd qword [esi + ecx + 0x18], xmm0
movsd xmm0, qword [ebp + eax + 0x10]
movsd qword [esi + ecx + 0x10], xmm0
movq xmm0, qword [ebp + eax]
movq xmm1, qword [ebp + eax + 8]
movq qword [esi + ecx + 8], xmm1
movq qword [esi + ecx], xmm0
cmp edx, ebx
lea edx, [edx + 1]
je 0x100f6d0d
cmp byte [ebp + edx], 0
js 0x100f6c2c
mov eax, edx
mov dword [esp + 8], edx
neg eax
imul eax, eax, 0x2c
mov ebx, dword [edi + eax + 8]
test ebx, ebx
je 0x100f6ca0
mov ebp, edi
mov ebp, dword [edi + eax]
mov esi, 0x1b3
mov edi, 0xcbf29ce4
mov eax, 0x84222325
nop word cs:[eax + eax]
nop
movzx ecx, byte [ebp]
imul edi, edi, 0x1b3
inc ebp
xor ecx, eax
mov eax, ecx
shl ecx, 8
mul esi
add ecx, edx
add edi, ecx
dec ebx
jne 0x100f6c70
xor eax, 0xff
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 4]
mul esi
mov esi, dword [esp + 0x18]
jmp 0x100f6cad
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 4]
mov eax, 0x8602eb6e
mov ecx, eax
mov ebp, edi
and ecx, edi
movdqu xmm0, xmmword [esi + ecx]
pmovmskb edx, xmm0
test edx, edx
jne 0x100f6ce4
mov edi, 0x10
nop word cs:[eax + eax]
nop
add ecx, edi
add edi, 0x10
and ecx, ebp
movdqu xmm0, xmmword [esi + ecx]
pmovmskb edx, xmm0
test edx, edx
je 0x100f6cd0
bsf dx, dx
movzx edx, dx
add edx, ecx
and edx, ebp
cmp byte [esi + edx], 0
js 0x100f6bc0
movdqa xmm0, xmmword [esi]
pmovmskb ecx, xmm0
bsf cx, cx
movzx edx, cx
jmp 0x100f6bc0
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
test ebx, ebx
mov dword [eax], ecx
mov dword [eax + 4], esi
mov dword [eax + 8], edx
jne 0x100f6d39
jmp 0x100f6b74
mov edi, dword [esp]
mov edx, eax
mov ebp, dword [edi + 4]
mov dword [edi], ecx
mov dword [edi + 4], esi
mov dword [edi + 8], edx
mov eax, dword [esp + 0x10]
mov ecx, 0x2c
mov esi, 0x80000001
mul ecx
add eax, 0xf
and eax, 0xfffffff0
add ebx, eax
add ebx, 0x11
je 0x100f6b79
sub ebp, eax
push 0x10
push ebx
push ebp
call fcn.1001d520
add esp, 0xc
jmp 0x100f6b79