Function at 0x140165e10
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
push rax
mov rbp, rsp
mov rsi, rcx
mov eax, dword [0x1415c4548]
or eax, dword [0x1415c454c]
imul eax, eax, 0x9977e824
add eax, 0x537aada0
mov ecx, 0xa6631eef
imul rcx, rax
shr rcx, 0x3f
cmp ecx, 0x8dc40455
jne 0x140165e70
mov eax, 0x20
call fcn.14021cf50
sub rsp, rax
mov eax, 0x20
call fcn.14021cf50
sub rsp, rax
nop dword [rax]
mov eax, dword [0x1415c4550]
or eax, dword [0x1415c4554]
imul ecx, eax, 0x3f6e21d3
mov eax, ecx
not eax
and eax, 0x1278dbad
mov edx, ecx
and edx, 0x6d872452
imul edx, eax
mov eax, ecx
and eax, 0x1278dbad
or ecx, 0x1278dbad
imul ecx, eax
add ecx, edx
or ecx, 0xb05a5d54
mov eax, 0x20
call fcn.14021cf50
sub rsp, rax
mov rbx, rsp
mov eax, 0x20
call fcn.14021cf50
sub rsp, rax
mov rdi, rsp
cmp ecx, 0x8987e2d5
jb 0x140165e70
mov rcx, qword [rsi]
nop dword [rax]
mov eax, dword [0x1415c4558]
xor edx, edx
div dword [0x1415c455c]
mov edx, 0xaff09936
sub edx, eax
add eax, 0x500f66c9
and edx, 0xd528c5f4
mov r8d, eax
and r8d, 0x2ad73a0b
or r8d, edx
xor r8d, 0x81ad76e
and eax, 0xdd32129a
or eax, r8d
cmp eax, 0xd3116001
jb 0x140165ee0
cmp rcx, 0xffffffffffffffff
je 0x140166187
lea rax, [rcx + 1]
lea rdx, [rcx + rcx]
cmp rdx, rax
cmova rax, rdx
cmp rax, 5
mov edx, 4
cmovae rdx, rax
movabs rax, 0x24924924924924a
xor r14d, r14d
cmp rdx, rax
setb r14b
test rcx, rcx
je 0x140165f79
imul rax, rcx, 0x38
mov rcx, qword [rsi + 8]
mov qword [rbx], rcx
mov qword [rbx + 0x10], rax
mov r13d, 8
jmp 0x140165f7c
xor r13d, r13d
mov qword [rbp], rdx
imul r15, rdx, 0x38
shl r14, 3
mov eax, dword [0x1415c4560]
imul eax, dword [0x1415c4564]
mov ecx, eax
and ecx, 0xdd8c7950
or eax, 0xdd8c7950
add eax, ecx
add eax, 0xe8dd2079
or eax, 0x1f40e073
cmp eax, 0xf36c5cd2
jbe 0x140165fe0
mov qword [rbx + 8], r13
sub rsp, 0x20
mov rcx, rdi
mov rdx, r14
mov r8, r15
mov r9, rbx
call fcn.140219c20
add rsp, 0x20
nop word cs:[rax + rax]
mov eax, dword [0x1415c4568]
mov ecx, dword [0x1415c456c]
mov edx, eax
and edx, ecx
or eax, ecx
add eax, edx
mov ecx, eax
not ecx
or ecx, 0x3f9017b0
lea r12d, [rcx + rax]
add r12d, 0x18e8bf96
imul rax, r12, 0x2e9d2fe9
shr rax, 0x20
sub r12d, eax
shr r12d, 1
add r12d, eax
shr r12d, 0x1e
mov qword [rbx + 8], r13
sub rsp, 0x20
mov rcx, rdi
mov rdx, r14
mov r8, r15
mov r9, rbx
call fcn.140219c20
add rsp, 0x20
cmp r12d, 0x3b6db9ef
je 0x140165fe0
cmp qword [rdi], 0
jne 0x140166140
mov eax, 0xa778c80f
nop word cs:[rax + rax]
mov ecx, dword [0x1415c4590]
mov edx, dword [0x1415c4594]
mov r8d, ecx
xor r8d, edx
not r8d
or ecx, edx
and ecx, r8d
mov edx, ecx
and edx, 0x5b014494
add edx, edx
neg edx
add ecx, edx
add ecx, 0xdb014494
mov edx, ecx
and edx, 0x2cefc4aa
add edx, edx
sub ecx, edx
add ecx, 0x2cefc4aa
imul rcx, rax
shr rcx, 0x3e
cmp ecx, 0x2507696e
ja 0x140166060
mov rax, qword [rdi + 8]
mov ecx, dword [0x1415c4598]
mov edx, dword [0x1415c459c]
mov r8d, edx
not r8d
mov r9d, ecx
and r9d, r8d
or r8d, ecx
not r8d
imul r8d, r9d
mov r9d, ecx
and r9d, edx
or ecx, edx
imul ecx, r9d
add ecx, r8d
add ecx, 0x873e1c53
imul rdx, rcx, 0x2f7cfd11
shr rdx, 0x20
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 0x1c
mov edx, ecx
not edx
and edx, 0xafbfef7d
mov r8d, ecx
and r8d, 2
imul r8d, edx
mov edx, ecx
and edx, 0xfffffffd
or ecx, 0xafbfef7d
imul ecx, edx
add ecx, r8d
cmp ecx, 0x333a95f9
jne 0x1401661fa
jmp 0x140166249
mov eax, dword [0x1415c4570]
or eax, dword [0x1415c4574]
cmp eax, 0x499ebc81
je 0x140166140
nop word cs:[rax + rax]
mov eax, dword [0x1415c4578]
and eax, dword [0x1415c457c]
and eax, 0x7fffffff
xor eax, 0x729a6c69
add eax, 0xdb8f9e5d
and eax, 0x6f650502
cmp eax, 0xb05756c
jb 0x140166160
mov eax, dword [0x1415c4580]
xor edx, edx
div dword [0x1415c4584]
imul rax, rax, 0x3ce40237
shr rax, 0x3a
mov ecx, eax
xor ecx, 0xee54ad64
xor eax, 0x844002c
and eax, ecx
cmp eax, 0x1332c36b
jbe 0x1401661c0
ud2
mov eax, dword [0x1415c4588]
mov ecx, dword [0x1415c458c]
not eax
not ecx
and ecx, eax
not ecx
add ecx, 0x9685ae3d
mov eax, ecx
and eax, 0x29c1955
xor ecx, 0x429c1955
lea eax, [rcx + rax*2]
or eax, 0xa7a22250
ud2
mov ecx, dword [0x1415c45a0]
mov edx, dword [0x1415c45a4]
mov r8d, edx
not r8d
mov r9d, ecx
and r9d, r8d
or r8d, ecx
not r8d
imul r8d, r9d
mov r9d, ecx
and r9d, edx
or ecx, edx
imul ecx, r9d
add ecx, r8d
or ecx, 0x7dc72fc
add ecx, 0x9d2ff357
or ecx, 0xfae72556
mov qword [rsi + 8], rax
cmp ecx, 0x775d0b1
jne 0x14016624f
mov qword [rsi + 8], rax
jmp 0x1401661fa
mov rax, qword [rbp]
mov qword [rsi], rax
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret