Function at 0x14001bc48
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov rsi, r8
mov rdi, rdx
mov rbx, rcx
test rdx, rdx
je 0x14001c0bf
lea eax, [r9 - 0x10]
mov edx, 0xffffffe7
test edx, eax
jne 0x14001c09c
cmp r9d, 0x28
je 0x14001c09c
movsxd rcx, dword [rsp + 0x90]
lea eax, [rcx - 0x10]
test edx, eax
jne 0x14001c0e2
cmp ecx, 0x28
je 0x14001c0e2
mov dword [rbx + 0x3d0], ecx
mov r8, rcx
lea rcx, [rbx + 0x3d8]
mov dword [rbx + 0x3cc], r9d
mov rdx, rsi
call fcn.1400530f0
movsxd r8, dword [rbx + 0x3d0]
lea rcx, [rbx + 0x3f8]
mov rdx, rsi
call fcn.1400530f0
mov eax, dword [rbx + 0x3cc]
mov ecx, dword [rbx + 0x3d0]
cmp eax, 0x10
je 0x14001bd08
cmp eax, 0x18
mov eax, reloc.WS2_32.dll_ntohl
jne 0x14001bd20
cmp ecx, 0x20
lea edx, [rax - 2]
cmovne eax, edx
jmp 0x14001bd20
cmp ecx, 0x10
jne 0x14001bd12
lea eax, [rcx - 6]
jmp 0x14001bd20
mov eax, reloc.WS2_32.dll_ntohl
cmp ecx, 0x18
lea edx, [rax - 2]
cmove eax, edx
mov dword [rbx + 0x3d4], eax
lea rbp, [rbx + 0xc]
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
movsxd r12, eax
xor esi, esi
test r12d, r12d
jle 0x14001bd50
mov r8, r12
xor edx, edx
shl r8, 2
mov rcx, rbp
call fcn.140054ae0
mov eax, dword [rbx + 0x3d4]
inc esi
add rbp, 0x20
cmp esi, eax
jle 0x14001bd3a
xor ebp, ebp
test eax, eax
js 0x14001bd93
lea rsi, [rbx + 0x1ec]
test r12d, r12d
jle 0x14001bd83
mov r8, r12
xor edx, edx
shl r8, 2
mov rcx, rsi
call fcn.140054ae0
mov eax, dword [rbx + 0x3d4]
inc ebp
add rsi, 0x20
cmp ebp, eax
jle 0x14001bd6d
lea r11d, [rax + 1]
mov eax, dword [rbx + 0x3cc]
cdq
imul r11d, r12d
and edx, 3
lea r15, [rbx + 0x418]
add eax, edx
mov rdx, r15
sar eax, 2
movsxd rbp, eax
test eax, eax
jle 0x14001bdf2
mov r8d, ebp
movzx ecx, byte [rdi]
lea rdi, [rdi + 4]
shl ecx, 0x18
mov dword [rdx], ecx
movzx eax, byte [rdi - 3]
shl eax, 0x10
or eax, ecx
mov dword [rdx], eax
movzx ecx, byte [rdi - 2]
shl ecx, 8
or ecx, eax
mov dword [rdx], ecx
movzx eax, byte [rdi - 1]
or eax, ecx
mov dword [rdx], eax
lea rdx, [rdx + 4]
sub r8, 1
jne 0x14001bdbe
xor r9d, r9d
lea rdi, [0x140000000]
test ebp, ebp
jle 0x14001be53
xor esi, esi
mov rdi, r15
cmp r9d, r11d
jge 0x14001bff0
mov eax, r9d
inc rsi
cdq
inc r9d
idiv r12d
movsxd rcx, eax
movsxd r8, edx
lea rdx, [r8 + rcx*8]
mov ecx, dword [rdi]
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 [rdi]
add rdi, 4
mov dword [rbx + rcx*4 + 0x1ec], eax
cmp rsi, rbp
jl 0x14001be05
lea rdi, [0x140000000]
cmp r9d, r11d
jge 0x14001bff0
lea r13, [0x14015a5b0]
movsxd rdx, dword [rbx + rbp*4 + 0x414]
mov rax, rdx
sar rax, 0x10
movzx ecx, al
movsx eax, byte [r13]
inc r13
movsx r8d, byte [rcx + rdi + 0x1573b0]
xor r8d, eax
mov rax, rdx
sar rax, 8
shl r8d, 8
movzx ecx, al
movzx eax, byte [rcx + rdi + 0x1573b0]
xor r8d, eax
movzx eax, dl
shl r8d, 8
sar rdx, 0x18
movzx eax, byte [rax + rdi + 0x1573b0]
xor r8d, eax
movzx eax, dl
shl r8d, 8
movzx eax, byte [rax + rdi + 0x1573b0]
xor r8d, eax
xor dword [r15], r8d
cmp ebp, 8
je 0x14001befb
cmp rbp, 1
jle 0x14001bf94
lea rcx, [rbx + 0x41c]
lea rdx, [rbp - 1]
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x14001bee7
jmp 0x14001bf94
lea rcx, [rbx + 0x41c]
mov edx, 3
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x14001bf07
movsxd r8, dword [rbx + 0x424]
mov rax, r8
sar rax, 0x18
movzx ecx, al
mov rax, r8
sar rax, 0x10
movsx edx, byte [rcx + rdi + 0x1573b0]
movzx ecx, al
shl edx, 8
movzx eax, byte [rcx + rdi + 0x1573b0]
xor edx, eax
mov rax, r8
sar rax, 8
shl edx, 8
movzx ecx, al
movzx eax, byte [rcx + rdi + 0x1573b0]
xor edx, eax
movzx eax, r8b
shl edx, 8
movzx eax, byte [rax + rdi + 0x1573b0]
xor edx, eax
xor dword [rbx + 0x428], edx
cmp rbp, 5
jle 0x14001bf94
lea rcx, [rbx + 0x42c]
lea rdx, [rbp - 5]
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x14001bf85
xor esi, esi
test ebp, ebp
jle 0x14001bfe7
mov rdi, r15
cmp r9d, r11d
jge 0x14001bff0
mov eax, r9d
inc rsi
cdq
inc r9d
idiv r12d
movsxd rcx, eax
movsxd r8, edx
lea rdx, [r8 + rcx*8]
mov ecx, dword [rdi]
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 [rdi]
add rdi, 4
mov dword [rbx + rcx*4 + 0x1ec], eax
cmp rsi, rbp
jl 0x14001bf9d
lea rdi, [0x140000000]
cmp r9d, r11d
jl 0x14001be63
mov r10d, 1
cmp dword [rbx + 0x3d4], r10d
jle 0x14001c07a
lea r11, [rbx + 0x20c]
lea r15, [0x140000000]
test r12d, r12d
jle 0x14001c06a
mov rdi, r11
mov rsi, r12
movsxd r9, dword [rdi]
mov rax, r9
sar rax, 0x18
movzx edx, al
mov rax, r9
sar rax, 0x10
movzx ecx, al
mov rax, r9
sar rax, 8
mov r8d, dword [r15 + rdx*4 + 0x1595b0]
xor r8d, dword [r15 + rcx*4 + 0x1599b0]
movzx ecx, al
movzx eax, r9b
xor r8d, dword [r15 + rcx*4 + 0x159db0]
xor r8d, dword [r15 + rax*4 + 0x15a1b0]
mov dword [rdi], r8d
lea rdi, [rdi + 4]
sub rsi, 1
jne 0x14001c018
inc r10d
add r11, 0x20
cmp r10d, dword [rbx + 0x3d4]
jl 0x14001c00d
lea r11, [rsp + 0x40]
mov byte [rbx + 8], 1
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
lea rdx, str.Incorrect_key_length
lea rcx, [rsp + 0x20]
call fcn.140026d60
lea rdx, [0x140196560]
lea rcx, [rsp + 0x20]
call fcn.140053908
int3
lea rdx, str.Empty_key
lea rcx, [rsp + 0x20]
call fcn.140026d60
lea rdx, [0x140196560]
lea rcx, [rsp + 0x20]
call fcn.140053908
int3
lea rdx, str.Incorrect_block_length
lea rcx, [rsp + 0x20]
call fcn.140026d60
lea rdx, [0x140196560]
lea rcx, [rsp + 0x20]
call fcn.140053908
int3