Function at 0x10110e90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov edi, dword [ecx + 0xc]
add edx, edi
jae 0x10110ead
push 1
call fcn.100b5120
add esp, 4
jmp 0x101112db
mov ebp, dword [ecx + 4]
lea ebx, [ebp + 1]
mov dword [esp + 0x28], ebp
mov eax, ebx
mov esi, ebx
and ebx, 0xfffffff8
shr eax, 3
sub ebx, eax
cmp ebp, 8
cmovb ebx, ebp
mov eax, ebx
shr eax, 1
cmp edx, eax
jbe 0x10110f0b
inc ebx
mov eax, esi
mov esi, ecx
cmp edx, ebx
cmova ebx, edx
cmp ebx, 8
jae 0x10110f84
mov dword [esp + 0x10], eax
xor eax, eax
cmp ebx, 4
mov dword [esp + 0xc], edi
setae al
lea edi, [eax*4 + 4]
mov ecx, 0x2c
mov eax, edi
mul ecx
jo 0x10110e9e
jmp 0x10110fcc
mov dword [esp + 0x30], ebx
mov dword [esp + 8], ecx
mov edx, dword [ecx]
mov ecx, esi
mov ebx, esi
xor eax, eax
shr ecx, 4
test bl, 0xf
setne al
add eax, ecx
je 0x10110f56
movdqa xmm0, xmmword [0x10152ea0]
mov ecx, edx
nop word cs:[eax + eax]
nop dword [eax]
pxor xmm1, xmm1
dec eax
pcmpgtb xmm1, xmmword [ecx]
por xmm1, xmm0
movdqa xmmword [ecx], xmm1
lea ecx, [ecx + 0x10]
jne 0x10110f40
cmp esi, 0x10
mov dword [esp + 0x18], edx
jae 0x10111036
lea eax, [edx + 0x10]
push esi
push edx
push eax
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [esp + 0x24]
add esp, 0xc
test esi, esi
jne 0x1011104a
xor ecx, ecx
jmp 0x101112cd
cmp ebx, 0x1fffffff
ja 0x10110e9e
shl ebx, 3
mov dword [esp + 0x10], eax
mov ecx, 0x24924925
mov dword [esp + 0xc], edi
mov edi, 0xffffffff
mov eax, ebx
mul ecx
sub ebx, edx
shr ebx, 1
add ebx, edx
shr ebx, 2
dec ebx
bsr eax, ebx
not eax
mov ecx, eax
shr edi, cl
inc edi
mov ecx, 0x2c
mov eax, edi
mul ecx
jo 0x10110e9e
add eax, 0xf
jb 0x10110e9e
and eax, 0xfffffff0
lea ecx, [edi + 0x10]
mov ebp, eax
add ebp, ecx
jb 0x10110e9e
cmp ebp, 0x7ffffff1
jae 0x10110e9e
test ebp, ebp
mov dword [esp], ecx
mov dword [esp + 8], esi
je 0x101112e3
movzx ecx, byte [0x10180e99]
push 0x10
push ebp
mov dword [esp + 0x28], eax
call fcn.100218a0
add esp, 8
mov ebx, eax
mov eax, dword [esp + 0x20]
test ebx, ebx
jne 0x101112e8
push ebp
push 0x10
push 1
call fcn.100b5170
add esp, 0xc
jmp 0x101112db
movq xmm0, qword [edx]
movq xmm1, qword [edx + 8]
movq qword [edx + esi + 8], xmm1
movq qword [edx + esi], xmm0
lea eax, [edx - 0x2c]
xor ecx, ecx
mov ebx, edx
mov dword [esp + 0xc], edi
mov dword [esp + 0x24], eax
jmp 0x10111083
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp]
lea esi, [ecx - 0x10]
and al, 0x7f
and esi, ebp
mov byte [edx + ecx], al
mov byte [edx + esi + 0x10], al
add ebx, 0xffffffd4
cmp ecx, ebp
lea ecx, [ecx + 1]
je 0x101112c5
cmp byte [edx + ecx], 0x80
jne 0x10111075
mov eax, dword [esp + 0x24]
imul esi, ecx, 0xffffffd4
mov dword [esp + 0x1c], ecx
add eax, esi
add esi, edx
mov dword [esp + 4], eax
mov eax, ecx
mov ecx, ecx
mov dword [esp + 0x2c], esi
not eax
neg ecx
imul eax, eax, 0x2c
imul esi, ecx, 0x2c
add esi, edx
add eax, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], esi
nop word [eax + eax]
mov ecx, dword [esi - 0x24]
test ecx, ecx
je 0x10111120
mov esi, dword [esi - 0x28]
mov ebp, 0xcbf29ce4
mov eax, 0x84222325
nop word cs:[eax + eax]
nop
movzx edi, byte [esi]
mov edx, 0x1b3
imul ebp, ebp, 0x1b3
inc esi
xor edi, eax
mov eax, edi
shl edi, 8
mul edx
add edi, edx
add ebp, edi
dec ecx
jne 0x101110e0
xor eax, 0xff
mov ecx, 0x1b3
mul ecx
add edx, ebp
mov ebp, dword [esp + 0x28]
shld edx, eax, 7
mov dword [esp], edx
jmp 0x1011112a
mov al, 0x43
mov dword [esp], eax
mov eax, 0x8602eb6e
mov edx, dword [esp + 0x18]
and eax, ebp
mov esi, eax
movdqu xmm0, xmmword [edx + eax]
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x10111164
mov edi, 0x10
mov esi, eax
nop word cs:[eax + eax]
add esi, edi
add edi, 0x10
and esi, ebp
movdqu xmm0, xmmword [edx + esi]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x10111150
tzcnt ecx, ecx
add ecx, esi
and ecx, ebp
cmp byte [edx + ecx], 0
js 0x1011117e
movdqa xmm0, xmmword [edx]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
mov esi, dword [esp + 0x1c]
mov edi, ecx
sub edi, eax
sub esi, eax
xor edi, esi
and edi, ebp
cmp edi, 0x10
jb 0x10111060
mov eax, ecx
mov edi, edx
lea esi, [ecx - 0x10]
not eax
and esi, ebp
imul eax, eax, 0x2c
add eax, edx
movzx edx, byte [edx + ecx]
mov byte [esp + 0x20], dl
mov edx, dword [esp]
and dl, 0x7f
cmp byte [esp + 0x20], 0xff
mov byte [edi + ecx], dl
mov byte [edi + esi + 0x10], dl
je 0x10111270
imul edx, ecx, 0xffffffd4
add edx, edi
cmp dword [esp + 4], edx
jae 0x101111d8
xor ecx, ecx
cmp eax, dword [esp + 0x2c]
jb 0x10111241
mov ecx, dword [esp + 0x10]
movsd xmm1, qword [eax]
movsd xmm0, qword [ecx]
movsd qword [ecx], xmm1
movsd qword [eax], xmm0
movsd xmm0, qword [ecx + 8]
movsd xmm1, qword [eax + 8]
movsd qword [ecx + 8], xmm1
movsd qword [eax + 8], xmm0
movsd xmm0, qword [ecx + 0x10]
movsd xmm1, qword [eax + 0x10]
movsd qword [ecx + 0x10], xmm1
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [ecx + 0x18]
movsd xmm1, qword [eax + 0x18]
movsd qword [ecx + 0x18], xmm1
movsd qword [eax + 0x18], xmm0
movq xmm0, qword [ecx + 0x20]
movq xmm1, qword [eax + 0x20]
movq qword [ecx + 0x20], xmm1
movq qword [eax + 0x20], xmm0
mov ecx, 0x28
mov esi, dword [esp + 0x14]
add ecx, 0xffffffd4
nop dword [eax + eax]
movzx eax, byte [ebx + ecx]
mov ah, byte [edx + ecx]
mov byte [ebx + ecx], ah
mov byte [edx + ecx], al
inc ecx
jne 0x10111250
jmp 0x101110c0
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
lea ecx, [edx - 0x10]
mov byte [edi + edx], 0xff
and ecx, ebp
mov byte [edi + ecx + 0x10], 0xff
mov ecx, dword [esi + 0x28]
mov dword [eax + 0x28], ecx
mov ecx, edx
mov edx, edi
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 0x10111075
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 8]
sub ecx, edi
mov dword [eax + 8], ecx
mov eax, 0x80000001
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, 0x10
mov ecx, edi
mov esi, edi
lea edx, [edi - 1]
shr ecx, 3
and esi, 0xfffffff8
sub esi, ecx
cmp edi, 9
mov edi, edx
cmovb esi, edx
add ebx, eax
mov dword [esp + 0x24], esi
push dword [esp]
push 0xff
push ebx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov esi, dword [esp + 0xc]
mov ebp, ebx
test esi, esi
je 0x101114dc
mov eax, dword [esp + 8]
mov dword [esp + 4], edi
mov dword [esp + 0x2c], ebp
mov edx, dword [eax]
xor eax, eax
movdqa xmm0, xmmword [edx]
mov ebx, edx
mov dword [esp + 0x14], edx
pmovmskb ecx, xmm0
not ecx
jmp 0x101113cc
lea eax, [ecx - 0x10]
and dl, 0x7f
not esi
and eax, edi
mov byte [ebp + ecx], dl
imul edi, esi, 0x2c
not ecx
mov byte [ebp + eax + 0x10], dl
mov edx, dword [esp + 0x1c]
imul ecx, ecx, 0x2c
lea eax, [edx - 1]
and eax, edx
mov edx, dword [esp + 0x14]
mov esi, dword [edx + edi + 0x28]
mov dword [ebp + ecx + 0x28], esi
mov esi, dword [esp + 0x20]
movsd xmm0, qword [edx + edi + 0x20]
dec esi
movsd qword [ebp + ecx + 0x20], xmm0
test esi, esi
movsd xmm0, qword [edx + edi + 0x18]
movsd qword [ebp + ecx + 0x18], xmm0
movsd xmm0, qword [edx + edi + 0x10]
movsd qword [ebp + ecx + 0x10], xmm0
movq xmm0, qword [edx + edi]
movq xmm1, qword [edx + edi + 8]
movq qword [ebp + ecx + 8], xmm1
movq qword [ebp + ecx], xmm0
mov ecx, eax
mov eax, dword [esp]
je 0x101114ce
test cx, cx
je 0x101113d7
mov edi, dword [esp + 4]
jmp 0x101113f9
mov edi, dword [esp + 4]
nop dword [eax + eax]
movdqa xmm0, xmmword [ebx + 0x10]
add ebx, 0x10
add eax, 0x10
pmovmskb ecx, xmm0
cmp ecx, 0xffff
je 0x101113e0
not ecx
mov dword [esp + 0x20], esi
tzcnt esi, ecx
mov dword [esp], eax
mov dword [esp + 0x1c], ecx
add esi, eax
mov eax, esi
mov dword [esp + 0x18], esi
neg eax
imul eax, eax, 0x2c
mov ebp, dword [edx + eax - 0x24]
test ebp, ebp
je 0x1011146b
mov edi, dword [edx + eax - 0x28]
mov esi, 0xcbf29ce4
mov eax, 0x84222325
nop dword [eax + eax]
movzx ecx, byte [edi]
mov edx, 0x1b3
imul esi, esi, 0x1b3
inc edi
xor ecx, eax
mov eax, ecx
shl ecx, 8
mul edx
add ecx, edx
add esi, ecx
dec ebp
jne 0x10111430
xor eax, 0xff
mov ecx, 0x1b3
mov edi, dword [esp + 4]
mul ecx
add edx, esi
mov esi, dword [esp + 0x18]
shld edx, eax, 7
jmp 0x10111472
mov dl, 0x43
mov eax, 0x8602eb6e
mov ebp, dword [esp + 0x2c]
and eax, edi
movdqu xmm0, xmmword [ebp + eax]
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x101114a9
mov esi, 0x10
nop dword [eax + eax]
add eax, esi
add esi, 0x10
and eax, edi
movdqu xmm0, xmmword [ebp + eax]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x10111490
mov esi, dword [esp + 0x18]
tzcnt ecx, ecx
add ecx, eax
and ecx, edi
cmp byte [ebp + ecx], 0
js 0x10111350
movdqa xmm0, xmmword [ebp]
pmovmskb eax, xmm0
tzcnt ecx, eax
jmp 0x10111350
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 4]
mov ecx, dword [esp + 8]
jmp 0x101114e6
mov ecx, dword [esp + 8]
mov eax, dword [ecx]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
mov dword [ecx], ebp
mov dword [ecx + 4], edi
sub eax, esi
test ebx, ebx
mov dword [ecx + 8], eax
mov eax, 0x80000001
je 0x101112db
mov ecx, 0x2c
mov eax, edx
mul ecx
add eax, 0xf
and eax, 0xfffffff0
add ebx, eax
add ebx, 0x11
je 0x101112d6
mov ecx, dword [esp + 0x14]
sub ecx, eax
push 0x10
push ebx
push ecx
call fcn.100218b0
add esp, 0xc
jmp 0x101112d6