Function at 0x140016ab0
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 [0x141f2eb28]
or eax, dword [0x141f2eb2c]
imul eax, eax, 0x373df258
imul rax, rax, 0x36d4eb23
shr rax, 0x3c
or eax, 0x75916f88
cmp eax, 0xd8ae1a45
jbe 0x140016b06
mov eax, 0x20
call fcn.1400f4d10
sub rsp, rax
mov eax, 0x20
call fcn.1400f4d10
sub rsp, rax
mov ecx, 0xa34d4e61
nop dword [rax + rax]
mov edx, dword [0x141f2eb30]
xor edx, dword [0x141f2eb34]
imul rdx, rcx
shr rdx, 0x3e
or edx, 0xf70cf568
mov eax, 0x20
call fcn.1400f4d10
sub rsp, rax
mov rdi, rsp
mov eax, 0x20
call fcn.1400f4d10
sub rsp, rax
mov rbx, rsp
cmp edx, 0xdf284790
jb 0x140016b10
xor eax, eax
nop word cs:[rax + rax]
test al, al
jne 0x140016b60
mov rcx, qword [rsi]
nop word [rax + rax]
mov eax, dword [0x141f2eb38]
xor edx, edx
div dword [0x141f2eb3c]
add eax, 0x74275f1
cmp eax, 0x4af084e4
ja 0x140016b70
cmp rcx, 0xffffffffffffffff
je 0x140016dfe
lea rax, [rcx + 1]
lea rdx, [rcx + rcx]
cmp rdx, rax
cmova rax, rdx
cmp rax, 5
mov r15d, 4
cmovae r15, rax
mov rax, r15
shr rax, 0x3b
jne 0x140016dfe
mov r14, r15
shl r14, 5
movabs rax, 0x7ffffffffffffff8
cmp r14, rax
ja 0x140016dfe
test rcx, rcx
je 0x140016c92
shl rcx, 5
nop word cs:[rax + rax]
mov eax, dword [0x141f2eb40]
imul eax, dword [0x141f2eb44]
add eax, 0xe3100a74
xor eax, 0x85f081d1
imul rax, rax, 0x6c358ea3
shr rax, 0x3e
cmp eax, 0x62a1a8d4
ja 0x140016bf0
mov rax, qword [rsi + 8]
mov edx, dword [0x141f2eb48]
sub edx, dword [0x141f2eb4c]
or edx, 0x522d44a9
add edx, 0x5b201982
imul rdx, rdx, 0x23774c57
shr rdx, 0x3c
cmp edx, 0x477c8ab8
jne 0x140016c4b
mov qword [rdi], rax
mov edx, 0x88a24a6d
mov r8d, dword [0x141f2eb50]
imul r8d, dword [0x141f2eb54]
imul r8, rdx
shr r8, 0x3f
mov qword [rdi], rax
cmp r8d, 0x49a2de2e
je 0x140016c50
mov eax, dword [0x141f2eb58]
sub eax, dword [0x141f2eb5c]
xor eax, 0x4709278b
add eax, 0x4d4c54a1
cmp eax, 0x2a42737b
jae 0x140016c97
jmp 0x140016cb3
xor r12d, r12d
jmp 0x140016cbf
mov eax, dword [0x141f2eb60]
or eax, dword [0x141f2eb64]
or eax, 0x30c008e8
mov qword [rdi + 0x10], rcx
cmp eax, 0x2f22bdc7
jne 0x140016cb9
mov qword [rdi + 0x10], rcx
jmp 0x140016c97
mov r12d, 8
mov eax, dword [0x141f2eb68]
or eax, dword [0x141f2eb6c]
imul eax, eax, 0xf59f8764
add eax, 0x3fbad3bc
cmp eax, 0x547b75f
jb 0x140016d28
mov r13d, dword [0x141f2eb70]
and r13d, dword [0x141f2eb74]
xor r13d, 0x28780281
and r13d, 0xaefce2d9
xor r13d, 0x100a5bae
mov qword [rdi + 8], r12
sub rsp, 0x20
mov edx, 8
mov rcx, rbx
mov r8, r14
mov r9, rdi
call fcn.1400c7170
add rsp, 0x20
cmp r13d, 0xddd7101a
jbe 0x140016d49
mov qword [rdi + 8], r12
sub rsp, 0x20
mov edx, 8
mov rcx, rbx
mov r8, r14
mov r9, rdi
call fcn.1400c7170
add rsp, 0x20
jmp 0x140016cdd
cmp qword [rbx], 0
jne 0x140016de0
mov rax, qword [rbx + 8]
xor ecx, ecx
nop dword [rax]
test cl, cl
jne 0x140016d60
mov ecx, dword [0x141f2eb98]
and ecx, dword [0x141f2eb9c]
xor ecx, 0x79f53aaa
imul rdx, rcx, 0x30122051
shr rdx, 0x20
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 0x1e
cmp ecx, 0xc7271c03
jne 0x140016da0
mov qword [rsi + 8], rax
mov qword [rsi], r15
nop dword [rax]
mov ecx, dword [0x141f2eba0]
imul ecx, dword [0x141f2eba4]
imul ecx, ecx, 0xf175efea
mov qword [rsi + 8], rax
mov qword [rsi], r15
cmp ecx, 0x4272ab12
je 0x140016da0
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov eax, dword [0x141f2eb78]
or eax, dword [0x141f2eb7c]
xor eax, 0xbfb53a58
imul eax, eax, 0x373c8742
cmp eax, 0x23b67432
je 0x140016de0
mov eax, dword [0x141f2eb80]
imul eax, dword [0x141f2eb84]
imul eax, eax, 0xa0189bc1
add eax, 0x1f0cfaa2
xor eax, 0xc0613af6
cmp eax, 0x6a42afad
jb 0x140016e41
mov eax, dword [str.P1_]
add eax, dword [0x141f2eb8c]
and eax, 0x19106941
add eax, 0x912dc271
ud2
ud2