Function at 0x1401d5940
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x148
lea rbp, [rsp + 0x80]
mov qword [rbp + 0xc0], 0xfffffffffffffffe
mov rsi, rdx
mov rdi, rcx
mov eax, dword [0x1405647dc]
cmp eax, 0x43
jg 0x1401d59d7
lea rcx, [rbp - 0x58]
mov edx, 1
call fcn.1400b1140
mov eax, dword [rdi + 8]
mov ecx, eax
shr ecx, 8
cmp byte [0x140565358], 0
cmove ecx, eax
mov eax, dword [0x140516608]
lea edx, [rax - 0xe4f77d3]
mov r8d, 0xe4f77d2
sub r8d, eax
lea r9, [fcn.1401d5940]
add r9d, r9d
add r9d, 0x3d00
xor edx, r9d
not r9d
and r9d, r8d
or r9d, edx
not r9d
lea edx, [rax - 0xe4f77d4]
cmp r9d, edx
je 0x1401d59e7
lea rcx, [rbp - 0x58]
mov edx, 1
call fcn.1400b1140
jmp 0x1401d5977
lea rbx, [rbp - 0x48]
mov edx, ecx
not edx
xor ecx, 0xf00
and edx, 0xfffff0ff
or edx, ecx
not edx
add edx, 0xffffff00
add eax, 0xf1b0902c
cmp edx, eax
jae 0x1401d5a27
movzx ecx, byte [0x140516608]
add cl, 0x34
shr edx, cl
lea rax, [0x14042e990]
mov rdx, qword [rax + rdx*8]
jmp 0x1401d5a2e
lea rdx, [0x1404273f8]
mov rcx, rbx
call fcn.1400b13a0
mov r14, rax
mov dword [rsp + 0x20], 0x1818a9b9
mov ecx, 1
mov edx, 1
mov r8d, 0x5cf91d3a
mov r9d, 0x4e11e0e9
call fcn.1401d6f40
mov rcx, r14
mov rdx, rax
call fcn.1400b13a0
mov ecx, dword [rdi + 0x18]
cmp byte [0x140565358], 0
mov edx, ecx
bswap edx
cmove edx, ecx
mov rcx, rax
call fcn.14015d710
mov r14, rax
mov r13, qword [0x1405163b8]
movsxd r15, dword [r13]
mov r12d, dword [0x14042e984]
xor ecx, ecx
mov edx, 1
mov r8d, 0xf22ea8d4
call fcn.1401d6970
mov rcx, r14
mov rdx, rax
call fcn.1400b13a0
mov ecx, dword [rdi + 0x1c]
cmp byte [0x140565358], 0
mov edx, ecx
bswap edx
cmove edx, ecx
mov rcx, rax
call fcn.14015d710
add r15, r13
lea rax, [fcn.1401d5940]
lea ecx, [rax + rax]
add ecx, 0x1b20
mov r8d, 0xf1b0882e
mov r9b, 1
nop word [rax + rax]
mov eax, dword [0x140516608]
add eax, 0xf1b0882d
xor eax, ecx
not eax
test eax, ecx
jne 0x1401d5b56
mov eax, dword [rdi + 8]
movzx r10d, byte [0x140565358]
movzx r11d, byte [0x14051660c]
add r11b, 0x16
mov edx, r11d
xor dl, 0x11
and r11b, 0x11
add r11b, r11b
add r11b, dl
cmp r10b, r11b
mov r14d, eax
bswap r14d
cmove r14d, eax
mov edx, dword [0x1405647d8]
lea eax, [rdx - 1]
imul eax, edx
mov r13d, dword [0x140516608]
add r13d, r8d
xor edx, edx
div r13d
test edx, edx
je 0x1401d5b5d
test r9b, r9b
je 0x1401d5af0
jmp 0x1401d5b03
cmp r14d, 0x100
je 0x1401d5bb3
cmp r10b, r11b
mov eax, dword [rdi + 0x20]
mov ecx, eax
bswap ecx
cmove ecx, eax
test ecx, ecx
je 0x1401d5bb3
xor ecx, ecx
mov edx, 1
mov r8d, 0xf22ea8d4
call fcn.1401d6970
mov rcx, rbx
mov rdx, rax
call fcn.1400b13a0
mov ecx, dword [rdi + 0x20]
movzx edx, byte [0x1405647e0]
add dl, byte [0x140565358]
mov edx, ecx
bswap edx
cmove edx, ecx
mov rcx, rax
call fcn.14015d710
lea rcx, [rbp - 0x40]
lea rdi, [rbp + 0xa0]
mov rdx, rdi
call fcn.1400fc370
xorps xmm0, xmm0
movups xmmword [rsi + 0x18], xmm0
mov rbx, qword [rbp + 0xb0]
cmp qword [rbp + 0xb8], 0x10
jb 0x1401d5be5
mov rdi, qword [rbp + 0xa0]
lea r13, [rsi + 8]
movabs rax, 0x14fc225bd480b5e4
add rax, qword [0x140516610]
cmp rbx, rax
jae 0x1401d5c12
movups xmm0, xmmword [rdi]
movups xmmword [r13], xmm0
mov r14d, 0xf
jmp 0x1401d5cd1
movabs r14, 0x14fc225bd480b5e3
add r14, qword [0x140516610]
or r14, rbx
movabs rax, 0x7fffffffffffffff
cmp r14, rax
cmovae r14, rax
cmp r14, 0xfff
jb 0x1401d5c98
lea rcx, [r14 + 0x28]
call fcn.1403e3fbc
movabs rcx, 0x14fc225bd480b5fb
add rcx, qword [0x140516610]
movabs rdx, 0xb38ee361dcf0cb33
add rdx, rax
mov r8, rdx
xor r8, rcx
and rdx, rcx
lea rcx, [r8 + rdx*2]
movabs rdx, 0x4c711c9e230f34cd
add rdx, rcx
mov ecx, edx
not ecx
xor rdx, 0xffffffffffffffe0
and ecx, 0x1f
or rcx, rdx
not rcx
mov qword [rcx - 8], rax
jmp 0x1401d5ca4
lea rcx, [r14 + 1]
call fcn.1403e3fbc
mov rcx, rax
mov qword [r13], rcx
mov rax, qword [0x140516610]
movabs rdx, 0x14fc225bd480b5d5
mov r8, rax
xor r8, rdx
and rax, rdx
lea r8, [r8 + rax*2]
add r8, rbx
mov rdx, rdi
call fcn.14040bf30
mov qword [rsi + 0x18], rbx
mov qword [rsi + 0x20], r14
lea rax, [0x140426b18]
mov qword [rsi], rax
mov r8, qword [rbp + 0xb8]
cmp r8, 0x10
jb 0x1401d6045
mov ecx, dword [0x1405647b8]
lea eax, [rcx + 1]
mov edx, dword [0x1405647dc]
cmp edx, 0x21
jge 0x1401d5d19
mov dword [0x1405647b8], eax
mov edx, dword [0x1405647dc]
cmp edx, 0x61
jl 0x1401d5d81
xor edx, edx
mov r9d, 0xf1b0884d
mov r10d, 0xf1b08865
jmp 0x1401d5d45
mov r11d, dword [0x1405647d8]
lea edi, [r11 + 1]
imul edi, r11d
test dil, 1
je 0x1401d5d08
test dl, dl
jne 0x1401d5d64
mov dword [0x1405647b8], eax
mov r11d, dword [0x1405647dc]
mov edi, dword [0x140516608]
add edi, r9d
cmp r11d, edi
jl 0x1401d5d30
mov dword [0x1405647b8], eax
mov r11d, dword [0x1405647dc]
mov edi, dword [0x140516608]
add edi, r10d
cmp r11d, edi
jge 0x1401d5d45
jmp 0x1401d5d49
not ecx
mov edx, 0xf1b0882c
nop dword [rax + rax]
mov r9d, dword [0x140516608]
mov r10d, dword [0x1405647dc]
cmp r10d, 0x29
jl 0x1401d5e03
nop word cs:[rax + rax]
mov r9d, dword [0x1405647dc]
cmp r9d, 0x52
jg 0x1401d5ddf
mov r9d, dword [0x1405647d8]
lea r10d, [r9 - 1]
imul r10d, r9d
and r10d, 1
mov r9d, dword [0x140516608]
add r9d, edx
cmp r10d, r9d
je 0x1401d5d90
mov r9d, dword [0x1405647d8]
lea r10d, [r9 - 1]
imul r10d, r9d
and r10d, 1
mov r9d, dword [0x140516608]
add r9d, edx
cmp r10d, r9d
jne 0x1401d5db0
jmp 0x1401d5dbd
mov edx, r9d
xor edx, 0xf1b0882b
not r9d
and r9d, 0xe4f77d4
or r9d, edx
not r9d
lea edx, [rdx + r9*2]
mov r9d, ecx
and r9d, edx
or ecx, edx
not ecx
or ecx, r9d
xor ecx, eax
mov edx, ecx
not edx
mov r9d, edx
and r9d, eax
not eax
and ecx, eax
or ecx, r9d
and eax, edx
or eax, ecx
not eax
mov ecx, dword [0x1405647d8]
nop dword [rax]
cmp dword [0x140516608], 0xe4f77d4
jne 0x1401d5e50
test eax, eax
jne 0x1401d5ed5
mov ecx, 0xf1b0882d
lea rdx, [fcn.1401d5940]
add edx, edx
add edx, 0x1980
nop word cs:[rax + rax]
mov r9d, dword [0x1405647d8]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x1401d5eb9
mov r9d, dword [0x1405647d8]
mov r10d, dword [0x140516608]
add r10d, ecx
not r10d
add r10d, r9d
dec r10d
imul r10d, r9d
test r10b, 1
je 0x1401d5eca
mov r9d, dword [0x140516608]
add r9d, ecx
test edx, r9d
jne 0x1401d5e80
jmp 0x1401d5e95
xor ecx, ecx
test r12d, r12d
jg 0x1401d5fa3
xor r10d, r10d
mov rcx, qword [rbp + 0xa0]
lea rdx, [r8 + 1]
movabs r9, 0x14fc225bd480c5d3
add r9, qword [0x140516610]
cmp rdx, r9
jbe 0x1401d6040
mov r9, qword [rcx - 8]
xor edx, edx
neg eax
sbb rdx, rdx
sub r10, qword [0x14042e978]
mov rax, r10
neg rax
xor rax, rdx
dec r10
not rax
and r10, rdx
or r10, rax
not r10
add qword [0x140563fd8], r10
mov rax, qword [0x140516610]
movabs rdx, 0x14fc225bd480b5cc
mov r10, rax
xor r10, rdx
and rax, rdx
lea rax, [r10 + rax*2]
movabs rdx, 0x47f53776b3312d4
add rdx, rcx
add rdx, rax
movabs rax, 0x80f534a7a93c6a6e
xor rax, rdx
movabs rcx, 0xf534a7a93c6a6e
and rcx, rdx
lea rax, [rax + rcx*2]
sub rax, r9
movabs rcx, 0x7a8b77e0eb9082be
add rcx, rax
cmp rcx, 0x20
jae 0x1401d5fde
mov eax, dword [0x1405647d8]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x1401d5ff0
jmp 0x1401d5fe3
xor edx, edx
nop word cs:[rax + rax]
movsxd rcx, ecx
mov r9, qword [r15 + rcx]
mov r10, r9
xor r10, r9
not r10
and r10, rdx
xor r10, r9
mov edx, ecx
xor edx, 8
and ecx, 8
lea ecx, [rdx + rcx*2]
mov rdx, r10
cmp ecx, r12d
jl 0x1401d5fb0
jmp 0x1401d5ed8
call fcn.1403c3cac
mov eax, dword [0x1405647dc]
cmp eax, 0x1d
jl 0x1401d601c
nop
mov ecx, dword [0x1405647d8]
mov r10d, dword [0x140516608]
mov eax, ecx
sub eax, r10d
add eax, 0xe4f77d3
imul eax, ecx
add r10d, 0xf1b0882e
xor edx, edx
div r10d
test edx, edx
jne 0x1401d5ff0
jmp 0x1401d5fe3
mov rax, r8
xor rax, 0x28
not r8
movabs rcx, 0x7fffffffffffffd7
and rcx, r8
or rcx, rax
not rcx
lea rdx, [rax + rcx*2]
mov rcx, r9
call fcn.1400a9560
lea rcx, [rbp - 0x58]
call fcn.1400b2360
mov rax, rsi
add rsp, 0x148
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret