Function at 0x140194938
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0xa0
mov rax, qword [0x140451b38]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov rsi, qword [0x14045d6f0]
xor r12d, r12d
mov qword [rbp - 0x29], rsi
mov dword [rbp - 0x39], r12d
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
xor edx, edx
mov r8d, 0x200
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rbx, rax
test rax, rax
jne 0x14019499f
mov ebx, r12d
jmp 0x1401949a7
mov r15, rbx
test rbx, rbx
jne 0x1401949b2
mov r14d, 0x8007000e
jmp 0x140194f96
mov dword [rsi + 0x2228], 0xe090d0b
lea rdi, [0x1403efa98]
mov byte [rax], r12b
lea rcx, [rbp - 0x19]
mov byte [rax + 0x100], 1
lea r14, [0x1403efaa8]
lea rax, [rbp - 0x19]
mov r8, rdi
sub r8, rax
lea r10, [0x1403efaa1]
mov r9d, r12d
movabs r13, 0xe38e38e38e38e38f
lea rax, [rbp - 0x10]
cmp rcx, rax
jae 0x140194a30
movsxd rax, r9d
mov al, byte [rax + r14]
xor al, byte [r8 + rcx]
mov byte [rcx], al
lea eax, [r9 + 1]
movsxd r9, eax
inc rcx
mov rax, r13
mul r9
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r9, rax
lea rax, [r8 + rcx]
cmp rax, r10
jb 0x1401949f6
mov byte [rcx], r12b
lea rcx, [rbp - 0x19]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea rcx, [rbp - 0x19]
mov r8d, r12d
mov r9, rax
lea r10, [0x1403efaa8]
lea rax, [rbp - 0x11]
cmp rcx, rax
jae 0x140194a84
movsxd rax, r8d
mov al, byte [rax + r10]
xor byte [rcx], al
lea eax, [r8 + 1]
movsxd r8, eax
inc rcx
mov rax, r13
mul r8
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r8, rax
lea rax, [rbp - 0x11]
cmp rcx, rax
jb 0x140194a4e
mov byte [rcx], r12b
lea r12, [0x1403efb38]
mov r13d, 0xba1d
test r9, r9
je 0x140194bcf
mov r8, r12
lea rax, [rbp + 7]
xor r10d, r10d
lea rcx, [rbp + 7]
sub r8, rax
lea rsi, [0x1403efaa8]
movabs r11, 0xe38e38e38e38e38f
lea r12, [0x1403efb51]
lea rax, [rbp + 0x20]
cmp rcx, rax
jae 0x140194aff
movsxd rax, r10d
mov al, byte [rax + rsi]
xor al, byte [r8 + rcx]
mov byte [rcx], al
lea eax, [r10 + 1]
movsxd r10, eax
inc rcx
mov rax, r11
mul r10
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r10, rax
lea rax, [r8 + rcx]
cmp rax, r12
jb 0x140194ac6
mov byte [rcx], 0
lea rdx, [rbp + 7]
mov rcx, r9
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
test rax, rax
je 0x140194b65
and qword [rbp - 0x31], 0
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rdi, rax
mov rcx, r12
mov rax, qword [0x1403d25b8]
call rax
and qword [rsp + 0x20], 0
lea r8, [rbp - 0x31]
mov r9d, 8
mov rax, r12
mov rcx, rdi
lea edx, [r9 - 1]
call rax
lea rdi, [0x1403efa98]
test eax, eax
jne 0x140194b65
cmp qword [rbp - 0x31], 0
je 0x140194b65
mov r13d, 0xba19
lea rcx, [rbp + 7]
xor r8d, r8d
movabs r14, 0xe38e38e38e38e38f
lea rsi, [0x1403efaa8]
lea rax, [rbp + 0xf]
cmp rcx, rax
jae 0x140194bb2
movsxd rax, r8d
mov al, byte [rax + rsi]
xor byte [rcx], al
lea eax, [r8 + 1]
movsxd r8, eax
inc rcx
mov rax, r14
mul r8
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r8, rax
lea rax, [rbp + 0xf]
cmp rcx, rax
jb 0x140194b7d
mov byte [rcx], 0
lea r9, [rbx + 0x100]
lea r12, [0x1403efb38]
test r13b, 4
jne 0x140194bd6
or byte [r9], 2
jmp 0x140194bd6
lea r9, [rbx + 0x100]
mov r8d, 1
mov r13d, 0x100
lea eax, [r8 - 1]
mov dl, byte [rax + r9]
mov ecx, eax
mov al, byte [rax + r9]
sar dl, 7
add al, al
and dl, 0x1b
xor dl, al
mov eax, r8d
xor dl, byte [rcx + r9]
movzx ecx, dl
mov byte [rax + r9], cl
cmp ecx, r13d
jae 0x140194f90
mov byte [rcx + rbx], r8b
inc r8d
cmp r8d, r13d
jb 0x140194be2
xor r8d, r8d
lea rax, [rbp + 7]
sub rdi, rax
lea rcx, [rbp + 7]
movabs r14, 0xe38e38e38e38e38f
lea rsi, [0x1403efaa8]
lea r9, [0x1403efaa1]
lea rax, [rbp + 0x10]
cmp rcx, rax
jae 0x140194c7b
movsxd rax, r8d
mov al, byte [rax + rsi]
xor al, byte [rdi + rcx]
mov byte [rcx], al
lea eax, [r8 + 1]
movsxd r8, eax
inc rcx
mov rax, r14
mul r8
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r8, rax
lea rax, [rdi + rcx]
cmp rax, r9
jb 0x140194c43
xor edi, edi
mov byte [rcx], dil
lea rcx, [rbp + 7]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rsi, qword [rbp - 0x29]
lea rcx, [rbp + 7]
mov r9, rax
lea r11, [0x1403efaa8]
mov r8d, edi
mov r14d, edi
movabs r10, 0xe38e38e38e38e38f
lea rax, [rbp + 0xf]
cmp rcx, rax
jae 0x140194ce2
movsxd rax, r8d
mov al, byte [rax + r11]
xor byte [rcx], al
lea eax, [r8 + 1]
movsxd r8, eax
inc rcx
mov rax, r10
mul r8
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r8, rax
lea rax, [rbp + 0xf]
cmp rcx, rax
jb 0x140194cac
mov byte [rcx], dil
test r9, r9
je 0x140194e03
lea rax, [rbp - 0x19]
mov r8d, edi
sub r12, rax
lea rcx, [rbp - 0x19]
lea rax, [rbp]
cmp rcx, rax
jae 0x140194d3d
movsxd rax, r8d
mov al, byte [rax + r11]
xor al, byte [r12 + rcx]
mov byte [rcx], al
lea eax, [r8 + 1]
movsxd r8, eax
inc rcx
mov rax, r10
mul r8
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r8, rax
lea rdx, [0x1403efb51]
lea rax, [r12 + rcx]
cmp rax, rdx
jb 0x140194cfc
mov byte [rcx], dil
lea rdx, [rbp - 0x19]
mov rcx, r9
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov r12, rax
test rax, rax
je 0x140194d9b
mov qword [rbp - 0x31], rdi
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rdi, rax
mov rcx, r12
mov rax, qword [0x1403d25b8]
call rax
and qword [rsp + 0x20], r14
lea r8, [rbp - 0x31]
mov r9d, 8
mov rax, r12
mov rcx, rdi
lea edx, [r9 - 1]
call rax
xor edi, edi
test eax, eax
jne 0x140194d9b
mov r9d, 0xba19
cmp qword [rbp - 0x31], rdi
jne 0x140194da1
mov r9d, 0xba1d
lea rcx, [rbp - 0x19]
mov r8d, edi
movabs r14, 0xe38e38e38e38e38f
lea rsi, [0x1403efaa8]
lea rax, [rbp - 0x11]
cmp rcx, rax
jae 0x140194dee
movsxd rax, r8d
mov al, byte [rax + rsi]
xor byte [rcx], al
lea eax, [r8 + 1]
movsxd r8, eax
inc rcx
mov rax, r14
mul r8
shr rdx, 3
lea rax, [rdx + rdx*8]
sub r8, rax
lea rax, [rbp - 0x11]
cmp rcx, rax
jb 0x140194db9
mov r14d, dword [rbp - 0x39]
test r9b, 4
mov rsi, qword [rbp - 0x29]
mov eax, 0x8004d10b
cmove r14d, eax
lea rbx, [rsi + 0x100]
mov r11d, 1
mov byte [rbx], 0x63
lea r9, [r15 + 1]
mov dword [rsi + 0x1200], 0xc66363a5
lea r10, [rsi + 0x1205]
mov byte [rsi + 0x63], dil
sub rbx, r15
mov dword [rsi + 0x38c], edi
movzx eax, byte [r9]
lea rcx, [r15 + 0x100]
sub rcx, rax
mov edx, 4
movzx eax, byte [rcx + 0xff]
mov r8d, eax
mov ecx, eax
add eax, eax
shr ecx, 7
or ecx, eax
movzx eax, cl
xor r8d, eax
sub rdx, 1
jne 0x140194e52
xor r8d, 0x63
lea r12d, [rdx + 4]
mov byte [rbx + r9], r8b
mov eax, r8d
and al, 0x80
mov rdi, rsi
neg al
mov byte [r8 + rsi], r11b
mov al, r8b
sbb cl, cl
mov byte [r10], r8b
and cl, 0x1b
mov byte [r10 + 1], r8b
add al, al
xor cl, al
mov byte [r10 + 2], cl
xor cl, r8b
sub r8, 0xffffffffffffff80
mov byte [r10 - 1], cl
lea r8, [rsi + r8*4]
sub rdi, r8
movzx eax, byte [rdi + r8 + 0x2228]
movzx ecx, byte [rax + r15]
movzx eax, byte [r9]
add ecx, eax
mov eax, 0x80808081
mul ecx
shr edx, 7
imul eax, edx, 0xff
sub ecx, eax
movsxd rax, ecx
mov cl, byte [rax + r15 + 0x100]
mov byte [r8], cl
inc r8
sub r12, 1
jne 0x140194eaa
inc r11d
add r10, 4
inc r9
mov r13d, 0x100
cmp r11d, r13d
jb 0x140194e35
lea rdx, [rsi + 0x1600]
mov rbx, r15
mov ecx, dword [rdx - 0x400]
mov eax, ecx
rol eax, 0x18
mov dword [rdx], eax
mov eax, ecx
rol eax, 0x10
mov dword [rdx + 0x400], eax
lea rdx, [rdx + 4]
rol ecx, 8
mov dword [rdx + 0x7fc], ecx
mov ecx, dword [rdx - 0x1404]
mov eax, ecx
rol eax, 0x18
mov dword [rdx - 0x1004], eax
mov eax, ecx
rol eax, 0x10
rol ecx, 8
mov dword [rdx - 0xc04], eax
mov dword [rdx - 0x804], ecx
sub r13, 1
jne 0x140194f0a
lea edx, [r13 + 1]
add rsi, 0x2200
lea r8d, [r13 + 0xa]
mov eax, edx
shl eax, 0x18
mov dword [rsi], eax
mov eax, edx
and al, 0x80
lea rsi, [rsi + 4]
neg al
sbb ecx, ecx
add dl, dl
and ecx, 0x1b
movzx eax, dl
mov edx, ecx
xor edx, eax
sub r8, 1
jne 0x140194f69
jmp 0x140194f9e
mov r14d, 0xc004d104
mov ecx, r14d
call fcn.14007ac40
mov ecx, r14d
call fcn.14007ace8
test rbx, rbx
je 0x140194fbf
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rbx
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, r14d
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.140388a50
lea r11, [rsp + 0xa0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret