Function at 0x140015790
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
push rbx
push rdi
sub rsp, 0x58
mov rdi, rdx
mov rbx, rcx
test rdx, rdx
je 0x140015c14
mov dword [rcx + 0x3cc], 0x20
mov qword [rax + 8], rbp
mov dword [rcx + 0x3d0], 0x10
movups xmm0, xmmword [str.sdfg45tyuhjiolk8]
mov qword [rax + 0x10], rsi
mov qword [rax + 0x20], r12
movups xmmword [rcx + 0x3d8], xmm0
mov qword [rax - 0x18], r13
movups xmm1, xmmword [str.sdfg45tyuhjiolk8]
mov qword [rax - 0x20], r14
mov qword [rax - 0x28], r15
movups xmmword [rcx + 0x3f8], xmm1
mov eax, dword [rcx + 0x3cc]
mov ecx, dword [rcx + 0x3d0]
cmp eax, 0x10
je 0x140015818
cmp eax, 0x18
mov eax, 0xe
jne 0x140015832
cmp ecx, 0x20
mov edx, 0xc
cmovne eax, edx
jmp 0x140015832
cmp ecx, 0x10
jne 0x140015822
lea eax, [rcx - 6]
jmp 0x140015832
cmp ecx, 0x18
mov eax, 0xe
mov edx, 0xc
cmove eax, edx
mov dword [rbx + 0x3d4], eax
xor ebp, ebp
mov eax, ecx
mov ecx, dword [rbx + 0x3d4]
cdq
and edx, 3
add eax, edx
sar eax, 2
movsxd r15, eax
mov r14, r15
test ecx, ecx
js 0x140015886
lea rsi, [rbx + 0xc]
nop dword [rax]
test r15d, r15d
jle 0x140015876
mov r8, r15
xor edx, edx
shl r8, 2
mov rcx, rsi
call fcn.14003f840
mov ecx, dword [rbx + 0x3d4]
inc ebp
add rsi, 0x20
cmp ebp, ecx
jle 0x140015860
xor esi, esi
test ecx, ecx
js 0x1400158b9
lea rbp, [rbx + 0x1ec]
test r15d, r15d
jle 0x1400158a9
mov r8, r15
xor edx, edx
shl r8, 2
mov rcx, rbp
call fcn.14003f840
mov ecx, dword [rbx + 0x3d4]
inc esi
add rbp, 0x20
cmp esi, ecx
jle 0x140015893
mov eax, dword [rbx + 0x3cc]
lea esi, [rcx + 1]
cdq
imul esi, r15d
and edx, 3
add eax, edx
lea rdx, [rbx + 0x418]
sar eax, 2
movsxd r12, eax
test eax, eax
jle 0x140015918
mov r8d, r12d
movzx ecx, byte [rdi]
lea rdx, [rdx + 4]
shl ecx, 0x18
lea rdi, [rdi + 4]
mov dword [rdx - 4], ecx
movzx eax, byte [rdi - 3]
shl eax, 0x10
or eax, ecx
mov dword [rdx - 4], eax
movzx ecx, byte [rdi - 2]
shl ecx, 8
or ecx, eax
mov dword [rdx - 4], ecx
movzx eax, byte [rdi - 1]
or ecx, eax
mov dword [rdx - 4], ecx
sub r8, 1
jne 0x1400158e0
xor r11d, r11d
lea r13, [0x140000000]
test r12d, r12d
jle 0x14001597a
xor r10d, r10d
lea r9, [rbx + 0x418]
cmp r11d, esi
jge 0x140015aa8
mov eax, r11d
inc r10
cdq
inc r11d
idiv r15d
movsxd rcx, eax
movsxd r8, edx
lea rdx, [r8 + rcx*8]
mov ecx, dword [r9]
mov dword [rbx + rdx*4 + 0xc], ecx
mov ecx, dword [rbx + 0x3d4]
sub ecx, eax
movsxd rax, ecx
lea rcx, [r8 + rax*8]
mov eax, dword [r9]
add r9, 4
mov dword [rbx + rcx*4 + 0x1ec], eax
cmp r10, r12
jl 0x140015931
cmp r11d, esi
jge 0x140015aa8
lea r13, [0x14007fdc0]
lea r14, [0x140000000]
mov r10d, dword [rbx + r12*4 + 0x414]
movzx edx, byte [r13]
lea r13, [r13 + 1]
movsxd r8, r10d
mov rax, r8
sar rax, 0x10
movzx ecx, al
mov rax, r8
sar rax, 8
movsx r9d, byte [rcx + r14 + 0x81b50]
xor r9d, edx
movzx ecx, al
shl r9d, 8
movzx eax, byte [rcx + r14 + 0x81b50]
xor r9d, eax
movzx eax, r8b
shl r9d, 8
movzx eax, byte [rax + r14 + 0x81b50]
xor r9d, eax
mov eax, r10d
shr rax, 0x18
shl r9d, 8
movzx eax, byte [rax + r14 + 0x81b50]
xor r9d, eax
xor dword [rbx + 0x418], r9d
cmp r12d, 8
je 0x140015b5a
cmp r12, 1
jle 0x140015a3f
lea rcx, [rbx + 0x41c]
lea rdx, [r12 - 1]
nop dword [rax]
nop word [rax + rax]
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x140015a30
test r12d, r12d
jle 0x140015a95
lea r9, [rbx + 0x418]
xor r10d, r10d
nop
cmp r11d, esi
jge 0x140015a9e
mov eax, r11d
inc r10
cdq
inc r11d
idiv r15d
movsxd rcx, eax
movsxd r8, edx
lea rdx, [r8 + rcx*8]
mov ecx, dword [r9]
mov dword [rbx + rdx*4 + 0xc], ecx
mov ecx, dword [rbx + 0x3d4]
sub ecx, eax
movsxd rax, ecx
lea rcx, [r8 + rax*8]
mov eax, dword [r9]
add r9, 4
mov dword [rbx + rcx*4 + 0x1ec], eax
cmp r10, r12
jl 0x140015a50
cmp r11d, esi
jl 0x140015991
mov r14, r15
lea r13, [0x140000000]
mov r15, qword [rsp + 0x40]
mov edi, 1
mov r12, qword [rsp + 0x88]
mov rbp, qword [rsp + 0x70]
cmp dword [rbx + 0x3d4], edi
jle 0x140015b40
lea rsi, [rbx + 0x20c]
nop
test r14, r14
jle 0x140015b32
mov r10, rsi
mov r11, r14
nop dword [rax + rax]
mov eax, dword [r10]
lea r10, [r10 + 4]
mov edx, eax
movsxd r9, eax
shr rdx, 0x18
mov rax, r9
sar rax, 0x10
movzx ecx, al
mov rax, r9
sar rax, 8
mov r8d, dword [r13 + rdx*4 + 0x801e0]
xor r8d, dword [r13 + rcx*4 + 0x81750]
movzx ecx, al
movzx eax, r9b
xor r8d, dword [r13 + rcx*4 + 0x80ee0]
xor r8d, dword [r13 + rax*4 + 0x7fde0]
mov dword [r10 - 4], r8d
sub r11, 1
jne 0x140015ae0
inc edi
add rsi, 0x20
cmp edi, dword [rbx + 0x3d4]
jl 0x140015ad0
mov r14, qword [rsp + 0x48]
mov r13, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x78]
mov byte [rbx + 8], 1
add rsp, 0x58
pop rdi
pop rbx
ret
lea rcx, [rbx + 0x41c]
mov edx, 3
nop word [rax + rax]
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x140015b70
mov eax, dword [rbx + 0x424]
mov ecx, eax
movsxd rdx, eax
shr rcx, 0x18
mov rax, rdx
sar rax, 0x10
movsx r8d, byte [rcx + r14 + 0x81b50]
movzx ecx, al
shl r8d, 8
movzx eax, byte [rcx + r14 + 0x81b50]
xor r8d, eax
mov rax, rdx
sar rax, 8
shl r8d, 8
movzx ecx, al
movzx eax, byte [rcx + r14 + 0x81b50]
xor r8d, eax
movzx eax, dl
shl r8d, 8
movzx eax, byte [rax + r14 + 0x81b50]
xor r8d, eax
xor dword [rbx + 0x428], r8d
cmp r12, 5
jle 0x140015a3f
lea rax, [rbx + 0x42c]
lea rdx, [r12 - 5]
nop dword [rax + rax]
mov ecx, dword [rax - 4]
xor dword [rax], ecx
lea rax, [rax + 4]
sub rdx, 1
jne 0x140015c00
jmp 0x140015a44
lea rdx, str.Empty_key
lea rcx, [rsp + 0x20]
call fcn.140001170
lea rdx, [0x1400905e0]
lea rcx, [rsp + 0x20]
call fcn.14003f0a0
int3