Function at 0x140105c60
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xf8
mov r12, qword [rcx + 0x18]
movzx r13d, word [r12 + 0x3d2]
mov rax, qword [rcx + 0x28]
mov qword [rsp + 0x38], rax
movzx ebp, word [rax + 0x3d2]
lea r11, [rbp + 1]
add r11, r13
cmp r11, 0xc
jae 0x140105cfd
mov r9, qword [rcx]
mov r10, qword [rcx + 8]
mov eax, dword [str._tL7_n]
xor edx, edx
div dword [0x140225434]
lea rdi, [r13 + 1]
or eax, 0xea2d3de9
mov edx, 0x438413b0
sub edx, eax
add eax, 0xbc7bec4f
mov r8d, eax
and r8d, 0x9999026a
and edx, 0x4642c495
imul edx, r8d
mov r8d, eax
and r8d, 0x2662ec14
or eax, 0x6662ec95
imul eax, r8d
add eax, edx
cmp eax, 0xeefcd7a4
jbe 0x140105d36
jmp 0x140105d51
ud2
movzx esi, word [r9 + 0x3d2]
mov r14, qword [rcx + 0x10]
mov word [r12 + 0x3d2], r11w
xor eax, eax
test al, al
je 0x140105d5c
mov word [r12 + 0x3d2], r11w
jmp 0x140105d36
mov qword [rsp + 0xc0], r11
mov qword [rsp + 0xd0], r10
lea rax, [r9 + 0x168]
mov qword [rsp + 0x30], rax
imul rax, r14, 0x38
mov qword [rsp + 0x50], r9
lea r15, [r9 + rax]
add r15, 0x168
mov eax, dword [0x140225438]
mov ecx, dword [0x14022543c]
mov edx, ecx
not edx
mov r8d, eax
and r8d, edx
or edx, eax
not edx
imul edx, r8d
mov r8d, eax
and r8d, ecx
or ecx, eax
imul ecx, r8d
add ecx, edx
or ecx, 0x45ea5d5
mov eax, 0xd7429c7f
imul rax, rcx
shr rax, 0x3e
or eax, 0xc6c50834
cmp eax, 0x17c77bfb
mov rax, r14
mov qword [rsp + 0x28], r14
jae 0x140105f31
mov rax, qword [r15 + 0x30]
mov qword [rsp + 0xa0], rax
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmm2, xmmword [r15 + 0x20]
movaps xmmword [rsp + 0x90], xmm2
movaps xmmword [rsp + 0x80], xmm1
movaps xmmword [rsp + 0x70], xmm0
mov rax, qword [rsp + 0x28]
lea r14, [rax + 1]
imul rdx, r14, 0x38
add rdx, qword [rsp + 0x30]
mov rax, qword [rsp + 0x28]
lea rbx, [rax + rax]
not rbx
add rbx, qword [rsp + 0x28]
add rbx, rsi
mov eax, ebx
not eax
mov rcx, rbx
and rcx, 0xffffffffffffffc7
and eax, 0x38
imul rax, rcx
mov ecx, ebx
and ecx, 0x38
mov r8, rbx
or r8, 0x38
imul r8, rcx
add r8, rax
mov rcx, r15
call sub.VCRUNTIME140.dll_memmove
imul rax, r13, 0x38
movaps xmm0, xmmword [rsp + 0x70]
movaps xmm1, xmmword [rsp + 0x80]
movaps xmm2, xmmword [rsp + 0x90]
movups xmmword [r12 + rax + 0x168], xmm0
movups xmmword [r12 + rax + 0x178], xmm1
movups xmmword [r12 + rax + 0x188], xmm2
mov rcx, qword [rsp + 0xa0]
mov qword [r12 + rax + 0x198], rcx
mov rax, qword [rsp + 0x38]
lea rdx, [rax + 0x168]
imul rax, rdi, 0x38
lea rcx, [r12 + rax]
add rcx, 0x168
mov eax, ebp
not eax
and eax, 0x38
mov r9d, ebp
and r9d, 0xffffffc7
imul r9, rax
mov eax, ebp
and eax, 0x38
mov r8, rbp
or r8, 0x38
imul r8, rax
add r8, r9
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x28]
shl rax, 5
mov rdx, qword [rsp + 0x50]
lea rcx, [rdx + rax]
movups xmm0, xmmword [rdx + rax]
movups xmm1, xmmword [rdx + rax + 0x10]
movaps xmmword [rsp + 0x80], xmm1
movaps xmmword [rsp + 0x70], xmm0
shl r14, 5
add r14, rdx
shl rbx, 5
mov rdx, r14
mov r14, qword [rsp + 0x28]
mov r8, rbx
call sub.VCRUNTIME140.dll_memmove
lea rdx, [r14 + 1]
imul rax, rdx, 0x38
add qword [rsp + 0x30], rax
mov rax, r14
not rax
mov qword [rsp + 0xc8], rsi
mov qword [rsp + 0xb8], rax
lea r9, [rax + rsi]
mov rax, r9
and rax, 0xffffffffffffffc7
mov qword [rsp + 0x68], rax
mov rax, r9
or rax, 0x38
mov qword [rsp + 0x60], rax
mov rcx, r13
imul r13, r13, 0x38
mov rax, qword [rsp + 0x38]
add rax, 0x168
mov qword [rsp + 0x40], rax
imul rax, rdi, 0x38
add rax, r12
add rax, 0x168
mov qword [rsp + 0xf0], rax
mov rax, rbp
or rax, 0x38
mov qword [rsp + 0xe8], rax
mov rsi, r14
shl rsi, 5
mov r8, qword [rsp + 0x50]
lea rax, [r8 + rsi]
mov qword [rsp + 0xe0], rax
mov rax, rdx
mov qword [rsp + 0x58], rdx
mov r14, rdx
shl r14, 5
add r14, r8
mov rax, r9
shl rax, 5
mov qword [rsp + 0xd8], rax
shl rcx, 5
add rcx, r12
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0x48], r9
nop dword [rax + rax]
mov eax, dword [str._r2]
mov ecx, dword [0x140225444]
mov edx, ecx
not edx
mov r8d, eax
and r8d, edx
or edx, eax
not edx
imul edx, r8d
mov r8d, eax
and r8d, ecx
or eax, ecx
imul eax, r8d
add eax, edx
mov ebx, eax
xor ebx, 0x6245b05
add ebx, eax
and eax, 0x1dba4fa
sub ebx, eax
or ebx, 0xfb4911e6
imul rax, rbx, 0x1bb3eacb
shr rax, 0x20
sub ebx, eax
shr ebx, 1
add ebx, eax
shr ebx, 0x1f
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmm2, xmmword [r15 + 0x20]
movaps xmmword [rsp + 0x70], xmm0
movaps xmmword [rsp + 0x80], xmm1
movaps xmmword [rsp + 0x90], xmm2
mov rax, qword [r15 + 0x30]
mov qword [rsp + 0xa0], rax
mov eax, r9d
not eax
and eax, 0x38
imul rax, qword [rsp + 0x68]
mov r8d, r9d
and r8d, 0x38
imul r8, qword [rsp + 0x60]
add r8, rax
mov rcx, r15
mov rdx, qword [rsp + 0x30]
call sub.VCRUNTIME140.dll_memmove
movaps xmm0, xmmword [rsp + 0x70]
movaps xmm1, xmmword [rsp + 0x80]
movaps xmm2, xmmword [rsp + 0x90]
movups xmmword [r12 + r13 + 0x168], xmm0
movups xmmword [r12 + r13 + 0x178], xmm1
movups xmmword [r12 + r13 + 0x188], xmm2
mov rax, qword [rsp + 0xa0]
mov qword [r12 + r13 + 0x198], rax
mov eax, ebp
not eax
and eax, 0x38
mov ecx, ebp
and ecx, 0xffffffc7
imul rcx, rax
mov r8d, ebp
and r8d, 0x38
imul r8, qword [rsp + 0xe8]
add r8, rcx
mov rcx, qword [rsp + 0xf0]
mov rdx, qword [rsp + 0x40]
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x50]
movups xmm0, xmmword [rax + rsi]
movups xmm1, xmmword [rax + rsi + 0x10]
movaps xmmword [rsp + 0x80], xmm1
movaps xmmword [rsp + 0x70], xmm0
mov rcx, qword [rsp + 0xe0]
mov rdx, r14
mov r8, qword [rsp + 0xd8]
call sub.VCRUNTIME140.dll_memmove
mov r9, qword [rsp + 0x48]
cmp ebx, 0x501b41ac
ja 0x140106000
mov eax, dword [0x140225448]
mov ecx, dword [0x14022544c]
mov edx, ecx
not edx
mov r8d, eax
and r8d, edx
or edx, eax
not edx
imul edx, r8d
mov r8d, eax
and r8d, ecx
or eax, ecx
imul eax, r8d
add eax, edx
mov ecx, eax
and ecx, 0x36a286ee
add ecx, ecx
sub eax, ecx
imul eax, eax, 0xa1604872
add eax, 0x519305fc
and eax, 0x7beabf46
cmp eax, 0x2843c924
mov r15, qword [rsp + 0x50]
mov r14, qword [rsp + 0x28]
jne 0x14010622c
movaps xmm0, xmmword [rsp + 0x70]
movaps xmm1, xmmword [rsp + 0x80]
mov rax, qword [rsp + 0xb0]
movups xmmword [rax + 0x10], xmm1
movups xmmword [rax], xmm0
mov rcx, rdi
shl rcx, 5
add rcx, r12
mov r8, rbp
shl r8, 5
mov rdx, qword [rsp + 0x38]
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x58]
lea rcx, [r15 + rax*8]
add rcx, 0x3d8
lea rdx, [r15 + r14*8]
add rdx, 0x3e8
mov rax, qword [rsp + 0x48]
lea r8, [rax*8]
call sub.VCRUNTIME140.dll_memmove
mov r9, qword [rsp + 0x48]
mov rax, rdi
shl rax, 5
add rax, r12
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], rbp
shl rbp, 5
mov qword [rsp + 0x68], rbp
mov rax, qword [rsp + 0x58]
lea rax, [r15 + rax*8]
add rax, 0x3d8
mov qword [rsp + 0x60], rax
mov rsi, r14
or rsi, 2
mov r13, qword [rsp + 0x38]
mov rbp, r15
lea r15, [r9*8]
mov rbx, qword [rsp + 0xb0]
nop dword [rax]
movaps xmm0, xmmword [rsp + 0x70]
movaps xmm1, xmmword [rsp + 0x80]
movups xmmword [rbx + 0x10], xmm1
movups xmmword [rbx], xmm0
mov rcx, qword [rsp + 0x30]
mov rdx, r13
mov r8, qword [rsp + 0x68]
call sub.VCRUNTIME140.dll_memcpy
mov eax, r14d
and eax, 2
add rax, rsi
lea rdx, [rax*8 + 0x3d8]
add rdx, rbp
mov rcx, qword [rsp + 0x60]
mov r8, r15
call sub.VCRUNTIME140.dll_memmove
mov eax, 0xdff8ef7f
add eax, 0x730a6cdf
jae 0x140106280
mov rbx, qword [rsp + 0xc8]
mov r10, qword [rsp + 0x58]
cmp r10, rbx
mov r15, rbp
mov r14, qword [rsp + 0xd0]
mov rbp, r13
mov rsi, qword [rsp + 0x40]
jae 0x14010649e
mov r13, r14
mov r8, 0xffffffffffffffff
lea rcx, [rbx - 2]
xor eax, eax
nop dword [rax]
test al, al
jne 0x140106310
mov r14, qword [rsp + 0x28]
sub rcx, r14
nop dword [rax]
mov eax, dword [0x140225450]
mov edx, dword [0x140225454]
mov r9d, eax
xor r9d, edx
not r9d
or eax, edx
and eax, r9d
add eax, 0x9356ca9b
mov edx, eax
not edx
mov r9d, eax
and r9d, 0x6d8836de
and edx, 0x9277c921
imul edx, r9d
mov r9d, eax
and r9d, 0x9277c921
or eax, 0x9277c921
imul eax, r9d
add eax, edx
cmp eax, 0x943b1364
jb 0x140106320
nop word cs:[rax + rax]
mov eax, dword [0x140225458]
xor edx, edx
div dword [0x14022545c]
lea edx, [rax - 0x7ba0a40d]
mov r9d, edx
and r9d, 0x9be8ea0a
xor edx, 0x641715f5
add eax, edx
add eax, 0x845f5bf3
sub eax, r9d
mov edx, eax
and edx, 0xa371569
add edx, edx
sub eax, edx
cmp eax, 0x588a2cde
je 0x140106380
test byte [rsp + 0x48], 3
je 0x140106426
lea rax, [r14 + 1]
lea rdx, [r15 + r14*8]
add rdx, 0x3e0
mov r9, qword [rsp + 0xb8]
add r9b, bl
not r8b
add r8b, r9b
movzx r8d, r8b
and r8d, 3
xor r9d, r9d
nop word cs:[rax + rax]
mov r10, qword [rdx + r9*8]
mov qword [r10 + 0x160], r15
lea r11d, [rax + r9]
mov word [r10 + 0x3d0], r11w
inc r9
cmp r8, r9
jne 0x140106400
lea r10, [r14 + r9]
inc r10
cmp rcx, 3
mov r14, r13
jb 0x14010649e
nop
mov rax, qword [r15 + r10*8 + 0x3d8]
mov qword [rax + 0x160], r15
mov word [rax + 0x3d0], r10w
mov rax, qword [r15 + r10*8 + 0x3e0]
mov qword [rax + 0x160], r15
lea ecx, [r10 + 1]
mov word [rax + 0x3d0], cx
mov rax, qword [r15 + r10*8 + 0x3e8]
mov qword [rax + 0x160], r15
lea ecx, [r10 + 2]
mov word [rax + 0x3d0], cx
mov rax, qword [r15 + r10*8 + 0x3f0]
mov qword [rax + 0x160], r15
lea ecx, [r10 + 3]
mov word [rax + 0x3d0], cx
add r10, 4
cmp r10, rbx
jne 0x140106430
movzx eax, word [r15 + 0x3d2]
dec eax
xor ecx, ecx
test cl, cl
je 0x1401064c0
mov word [r15 + 0x3d2], ax
nop word cs:[rax + rax]
mov ecx, dword [0x140225460]
mov edx, dword [0x140225464]
mov r8d, ecx
xor r8d, edx
not r8d
and r8d, edx
add r8d, r8d
sub edx, r8d
add edx, ecx
and edx, 0xdb2fe98e
add edx, 0x60b5f855
mov ecx, edx
not ecx
and ecx, 0xd103ea3c
and edx, 0xa7c1182
sub edx, ecx
mov word [r15 + 0x3d2], ax
cmp edx, 0x90458f62
ja 0x1401064c0
cmp r14, 2
jb 0x140106869
mov r13, r14
lea r14, [r12 + rdi*8]
add r14, 0x3d8
lea rbx, [rbp + 0x3d8]
lea rsi, [rsi*8]
mov eax, dword [str.PC]
or eax, dword [0x14022546c]
or eax, 0x76a13982
mov ecx, eax
xor ecx, 0x3362384d
add ecx, eax
and eax, 0xcc9dc7b2
sub ecx, eax
xor ecx, 0xf63da3b7
cmp ecx, 0xe8c8f8c3
ja 0x140106586
mov eax, esi
and eax, 8
mov rcx, rsi
xor rcx, 8
lea r8, [rcx + rax*2]
mov rcx, r14
mov rdx, rbx
call sub.VCRUNTIME140.dll_memcpy
xor eax, eax
test al, al
je 0x140106597
lea r8, [rsi + 8]
mov rcx, r14
mov rdx, rbx
call sub.VCRUNTIME140.dll_memcpy
jmp 0x140106565
mov rsi, qword [rsp + 0x40]
lea rcx, [rsi + 1]
mov eax, ecx
xor eax, 0x1fffc
and eax, ecx
nop dword [rax]
mov ecx, dword [0x140225470]
or ecx, dword [0x140225474]
mov edx, ecx
xor edx, 0x8002018
and ecx, 0x3c1e2278
xor ecx, 0x66c85be7
and edx, 0x28002018
or edx, ecx
cmp edx, 0xe1cf5a0
je 0x1401065b0
test rax, rax
mov r11, qword [rsp + 0xc0]
mov r14, r13
je 0x1401066dc
xor ecx, ecx
nop word cs:[rax + rax]
mov edx, dword [0x140225478]
mov r8d, dword [0x14022547c]
mov r9d, edx
not r9d
and r9d, r8d
mov r10d, r8d
not r10d
and r10d, edx
imul r10d, r9d
mov r9d, edx
and r9d, r8d
or edx, r8d
imul edx, r9d
add edx, r10d
mov r8d, edx
not r8d
or r8d, 0x6889c86c
or edx, 0x97763793
and edx, r8d
lea r8d, [rdx - 0x56c4c865]
mov r9d, r8d
and r9d, 0xc091b0f0
xor r8d, 0x3f6e4f0f
add edx, r8d
add edx, 0xa93b379b
sub edx, r9d
cmp edx, 0x5a870753
jne 0x140106690
mov rdx, qword [r12 + rdi*8 + 0x3d8]
mov qword [rdx + 0x160], r12
mov word [rdx + 0x3d0], di
nop dword [rax + rax]
mov edx, dword [0x140225480]
or edx, dword [0x140225484]
mov r8, qword [r12 + rdi*8 + 0x3d8]
mov qword [r8 + 0x160], r12
mov word [r8 + 0x3d0], di
or edx, 0x9644786f
imul edx, edx, 0xa2e3e62f
add edx, 0x80d4321a
cmp edx, 0x3e9f54af
jb 0x140106690
inc rdi
inc rcx
cmp rcx, rax
jne 0x140106600
cmp si, 3
jb 0x140106869
nop word cs:[rax + rax]
mov eax, dword [0x140225488]
mov ecx, dword [0x14022548c]
mov edx, ecx
and edx, eax
add eax, ecx
sub eax, edx
add eax, 0xb00792bf
mov ecx, eax
not ecx
and ecx, 0x3f031fa6
mov edx, eax
and edx, 0xc0fce059
imul edx, ecx
mov ecx, eax
and ecx, 0x3f031fa6
or eax, 0x3f031fa6
imul eax, ecx
add eax, edx
cmp eax, 0xc7ca9f82
jne 0x1401067c0
mov eax, edi
and eax, 1
mov rcx, rdi
or rcx, 1
add rcx, rax
mov rax, qword [r12 + rdi*8 + 0x3d8]
mov qword [rax + 0x160], r12
mov word [rax + 0x3d0], di
mov rax, 0xfffffffffffffffe
sub rax, rdi
mov rdx, qword [r12 + rcx*8 + 0x3d8]
mov qword [rdx + 0x160], r12
mov word [rdx + 0x3d0], cx
shl rax, 3
neg rax
mov rax, qword [r12 + rax + 0x3d8]
mov qword [rax + 0x160], r12
lea ecx, [rdi + 2]
mov word [rax + 0x3d0], cx
mov rax, qword [r12 + rdi*8 + 0x3f0]
mov qword [rax + 0x160], r12
lea ecx, [rdi + 3]
mov word [rax + 0x3d0], cx
nop dword [rax]
mov eax, dword [0x140225490]
sub eax, dword [0x140225494]
imul ecx, eax, 0xc66f8868
or ecx, 0x7f7c21e0
lea rax, [rdi + 1]
lea rdx, [rdi + 2]
mov r8, 0xfffffffffffffffd
sub r8, rdi
mov r9, qword [r12 + rdi*8 + 0x3d8]
mov qword [r9 + 0x160], r12
mov word [r9 + 0x3d0], di
mov r9, qword [r12 + rdi*8 + 0x3e0]
mov qword [r9 + 0x160], r12
mov word [r9 + 0x3d0], ax
lea rax, [rdi + 3]
shl r8, 3
neg r8
mov r9, qword [r12 + rdi*8 + 0x3e8]
mov qword [r9 + 0x160], r12
mov word [r9 + 0x3d0], dx
mov rdx, qword [r12 + r8 + 0x3d8]
mov qword [rdx + 0x160], r12
mov word [rdx + 0x3d0], ax
cmp ecx, 0x3c9f6b7d
je 0x1401067c0
add rdi, 4
cmp rax, r11
jne 0x1401066f0
mov eax, dword [0x140225498]
sub eax, dword [0x14022549c]
mov ecx, eax
and ecx, 0x70874f4
mov edx, ecx
not edx
and edx, 0x3ce58f9c
mov r8d, eax
and r8d, 0x3087060
imul r8d, edx
and eax, 0x4000494
or ecx, 0x3ce58f9c
imul ecx, eax
add ecx, r8d
mov eax, ecx
xor eax, 0x3ac6b3bd
and ecx, 0x45394c40
add ecx, ecx
sub ecx, eax
cmp ecx, 0x3221c17
je 0x1401068d8
mov rcx, qword [0x14022cb48]
xor esi, esi
xor edx, edx
mov r8, rbp
call qword [sym.imp.KERNEL32.dll_HeapFree]
test sil, sil
je 0x1401068f0
mov rcx, qword [0x14022cb48]
xor edx, edx
mov r8, rbp
call fcn.14014eed0
jmp 0x1401068bf
mov eax, dword [str.d_tC]
mov ecx, dword [0x1402254a4]
xor ecx, eax
not ecx
and ecx, eax
mov eax, ecx
xor eax, 0x2002659
xor ecx, 0xd9f24926
mov edx, ecx
and edx, 0xe4ddd880
and eax, 0x1b22277f
imul eax, edx
mov edx, ecx
and edx, 0x1b22277f
or ecx, 0x1b22277f
imul ecx, edx
add eax, ecx
add eax, 0x105226e1
cmp eax, 0xa6a4bae6
jb 0x1401068f0
nop
mov eax, dword [0x1402254a8]
sub eax, dword [0x1402254ac]
imul rax, rax, 0x5fafa7ff
shr rax, 0x3e
or eax, 0x341040
cmp eax, 0x721a46fc
ja 0x140106940
mov rax, r15
mov rdx, r14
add rsp, 0xf8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret