Function at 0x1404c7a20
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xa8
lea rbp, [rsp + 0x80]
movdqa xmmword [rbp + 0x10], xmm8
movdqa xmmword [rbp], xmm7
movdqa xmmword [rbp - 0x10], xmm6
mov qword [rbp - 0x18], 0xfffffffffffffffe
mov r12, r8
mov rbx, rdx
mov rdi, rcx
mov r15, r8
pxor xmm0, xmm0
movdqa xmmword [rbp - 0x40], xmm0
mov qword [rbp - 0x30], 0
inc r15
jne 0x1404c7a9b
mov r14, qword [rbp - 0x40]
test rbx, rbx
sete al
test r14, r14
setne cl
cmp cl, al
je 0x1404c7c96
test r14, r14
jne 0x1404c7b5f
jmp 0x1404c7c96
js 0x1404c7c84
cmp r15, 0x1000
jb 0x1404c7af5
lea rcx, [r12 + 0x28]
mov edx, 0x4d7c47d
mov r8d, 0xfb9e4681
mov r9d, 0x8485aa35
call fcn.1400a8810
mov ecx, eax
not ecx
and ecx, 0x27
mov rdx, rax
xor rdx, 0xffffffffffffffd8
or rdx, rcx
not rdx
or rdx, rcx
mov ecx, eax
and ecx, 0x27
lea rcx, [rdx + rcx*2]
mov r14, rcx
xor r14, 0x1f
and r14, rcx
mov qword [r14 - 8], rax
jmp 0x1404c7b11
mov rcx, r15
mov edx, 0x4d7c47d
mov r8d, 0xfb9e4681
mov r9d, 0x8485aa35
call fcn.1400a8810
mov r14, rax
mov qword [rbp - 0x40], r14
lea rsi, [r14 + r15]
mov qword [rbp - 0x30], rsi
mov rcx, r14
xor edx, edx
mov r8, r15
call fcn.140512320
mov qword [rbp - 0x38], rsi
test rbx, rbx
sete al
movzx ecx, byte [0x140693ed0]
not cl
test r14, r14
setne dl
and cl, al
cmp dl, cl
je 0x1404c7c96
test r14, r14
je 0x1404c7c96
test r12, r12
je 0x1404c7c89
mov rax, r14
sub rax, rbx
lea rcx, [0x1405647a8]
movsxd rdx, dword [0x1405647a8]
movabs r8, 0xec4734509bee6faf
add r8, rcx
add r8, rdx
movabs rcx, 0x13b8cbaf64119051
add rcx, r8
mov qword [rbp - 0x20], rcx
nop word cs:[rax + rax]
mov ecx, dword [0x140698dd4]
cmp ecx, 0x41
jg 0x1404c7bc3
mov r15d, dword [0x1405647b0]
mov ecx, dword [0x140698dd0]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x1404c7bd6
mov ecx, dword [0x1405647b0]
mov ecx, dword [0x140698dd4]
cmp ecx, 0x2d
jge 0x1404c7ba0
jmp 0x1404c7bab
xor ecx, ecx
cmp r12, 8
jb 0x1404c8103
cmp rax, 0x20
jb 0x1404c8103
cmp r12, 0x20
setb cl
movzx eax, byte [0x1406941f0]
mov edx, eax
xor dl, cl
not dl
and dl, cl
or al, cl
mov r8d, eax
not r8b
xor ecx, ecx
mov r9, r12
not r9
test r8b, dl
jne 0x1404c8081
test al, 1
jne 0x1404c8081
movabs rcx, 0xa581f4f439902c00
add rcx, qword [0x140686408]
mov rax, r12
xor rax, rcx
not rcx
mov qword [rbp - 0x50], r9
and rcx, r9
or rcx, rax
not rcx
mov r9d, dword [0x140685dd4]
mov eax, 0xc9eb90a8
sub eax, r9d
mov edx, eax
xor edx, 0x36146f58
and eax, 0x36146f58
lea edx, [rdx + rax*2]
mov eax, dword [0x140686400]
sub eax, edx
add eax, 0x7ce8b82f
test rbx, rbx
jne 0x1404c7d81
jmp 0x1404c7da0
call fcn.1402f1e30
movzx eax, byte [0x140686410]
add al, 0x7e
mov byte [r14 + r12], al
movsxd r8, r12d
mov rdx, qword [rbp - 0x40]
lea rax, [rdi + 8]
mov qword [rbp - 0x20], rax
mov qword [rdi + 0x18], 0
mov qword [rdi + 0x20], 0xf
mov byte [rdi + 8], 0
lea rax, [0x14052ecd8]
mov qword [rdi], rax
mov rcx, rdi
call fcn.1402f0ca0
mov rcx, qword [rbp - 0x40]
test rcx, rcx
je 0x1404c7d58
mov rax, qword [0x140686408]
movabs rdx, 0x60b4a581a247977f
xor rdx, rax
not rax
movabs r8, 0x1f4b5a7e5db86880
and r8, rax
or r8, rdx
not r8
xor eax, eax
sub rax, qword [rbp - 0x30]
lea rdx, [rdx + r8*2]
neg rdx
mov r8, rax
xor r8, rdx
and rdx, rax
lea rax, [r8 + rdx*2]
add rax, rcx
movabs rdx, 0x44cd4f72974894a1
sub rdx, rax
cmp rdx, 0x1000
jb 0x1404c7d4d
mov rax, qword [rcx - 8]
sub rcx, rax
add rcx, 0xfffffffffffffff8
cmp rcx, 0x20
jae 0x1404c7d7c
add rdx, 0x27
mov rcx, rax
mov r8d, 0xc37c7d18
call fcn.1404c8400
mov rax, rdi
movaps xmm6, xmmword [rbp - 0x10]
movaps xmm7, xmmword [rbp]
movaps xmm8, xmmword [rbp + 0x10]
add rsp, 0xa8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.1404ca324
mov dword [0x140685dd4], eax
mov edx, dword [0x140698dd4]
cmp edx, 0x54
jl 0x1404c7dbc
nop word cs:[rax + rax]
mov dword [0x140685dd4], eax
mov edx, dword [0x140698dd0]
lea r8d, [rdx - 1]
imul r8d, edx
test r8b, 1
jne 0x1404c7da0
jmp 0x1404c7d81
mov qword [rbp - 0x58], r12
mov qword [rbp - 0x48], rdi
mov edx, r9d
not edx
mov r8d, eax
not r8d
mov r10d, r9d
and r10d, r8d
xor r8d, edx
and edx, eax
or r10d, edx
and r9d, eax
or r9d, r8d
not r9d
or r9d, r10d
not r9d
test r9d, r9d
je 0x1404c7df5
xor edi, edi
jmp 0x1404c7e06
xor r12d, r12d
mov edi, 0
test r15d, r15d
jg 0x1404c8255
xor eax, eax
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x140564790]
movdqa xmm2, xmmword [0x140564760]
mov edx, 0x7ce8b84d
lea r11, [fcn.1404c7a20]
lea r8d, [r11 + r11 + 0x20c0]
mov dword [rbp - 0x20], r8d
not r8d
mov dword [rbp - 0x24], r8d
neg edi
mov r13d, 0x7ce8b874
jmp 0x1404c7e59
cmp rax, rcx
je 0x1404c804d
movdqu xmm3, xmmword [rbx + rax]
movdqu xmm4, xmmword [rbx + rax + 0x10]
movdqa xmm5, xmm3
pxor xmm5, xmm1
movdqa xmm6, xmm3
pandn xmm6, xmm5
movdqa xmm5, xmm3
pxor xmm5, xmm2
pandn xmm3, xmm1
por xmm3, xmm5
pxor xmm3, xmm0
por xmm3, xmm6
movdqa xmm5, xmm4
pxor xmm5, xmm1
movdqa xmm6, xmm4
pandn xmm6, xmm5
pand xmm4, xmm2
movdqa xmm5, xmm4
pxor xmm5, xmm0
movdqa xmm7, xmm6
por xmm7, xmm4
movdqa xmm8, xmm6
pandn xmm8, xmm4
pandn xmm4, xmm6
pandn xmm6, xmm5
por xmm6, xmm7
pxor xmm6, xmm0
por xmm4, xmm8
por xmm4, xmm6
movdqu xmmword [r14 + rax], xmm3
movdqu xmmword [r14 + rax + 0x10], xmm4
add rax, 0x20
movzx r8d, word [0x1405647b4]
mov r10d, dword [0x140698dd0]
nop word cs:[rax + rax]
xor r10d, r10d
test r9d, r9d
setne sil
mov r15d, dword [0x140698dd4]
mov r12d, dword [0x140686400]
add r12d, edx
cmp r15d, r12d
jge 0x1404c7f00
mov r10b, sil
mov esi, dword [rbp - 0x24]
test dword [rbp - 0x20], esi
jne 0x1404c7fe0
nop
mov esi, dword [0x140698dd4]
cmp esi, 0x25
jge 0x1404c7fe0
movzx r10d, r10w
neg r10d
movsx esi, r10w
not esi
neg r8d
mov r10d, dword [0x140698dd4]
nop word cs:[rax + rax]
mov r10d, dword [0x140698dd4]
mov r15d, dword [0x140686400]
add r15d, r13d
cmp r10d, r15d
jge 0x1404c7f60
mov r10d, edi
sub r10d, r8d
movsx r8d, si
xor r8d, r10d
not r8d
nop word cs:[rax + rax]
mov esi, dword [0x140686400]
mov r15d, esi
xor r15d, 0x7ce8b82f
and esi, 0x7ce8b82f
lea esi, [r15 + rsi*2]
lea r15d, [r11 + r11]
add r15d, 0x32c0
test r15d, esi
jne 0x1404c7f90
movzx esi, byte [0x1406941f0]
mov r15d, dword [0x140698dd0]
lea r12d, [r15 - 1]
imul r12d, r15d
test r12b, 1
jne 0x1404c8030
jmp 0x1404c8000
mov esi, dword [0x140698dd0]
lea r15d, [rsi - 1]
imul r15d, esi
test r15b, 1
jne 0x1404c7fe0
jmp 0x1404c7f30
test r8w, r10w
setne r15b
or r15b, sil
and r15b, 1
mov byte [0x1406941f0], r15b
mov r15d, dword [0x140698dd4]
cmp r15d, 0x1b
jl 0x1404c7e50
nop word [rax + rax]
mov r15d, esi
and r15b, 1
mov byte [0x1406941f0], r15b
mov r15d, dword [0x140698dd4]
cmp r15d, 0x5c
jge 0x1404c8030
jmp 0x1404c8000
mov r12, qword [rbp - 0x58]
cmp rcx, r12
jne 0x1404c805f
mov rdi, qword [rbp - 0x48]
jmp 0x1404c7c89
movabs rax, 0xa581f4f439902c38
add rax, qword [0x140686408]
test r12, rax
mov rdi, qword [rbp - 0x48]
mov r9, qword [rbp - 0x50]
je 0x1404c8103
mov rax, rcx
mov rdx, r12
xor rdx, 0xfffffffffffffff8
mov rcx, r12
xor rcx, 7
and rcx, r9
or rcx, rdx
mov rdx, 0xfffffffffffffff7
sub rdx, rcx
not rcx
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x140564770]
movdqa xmm2, xmmword [0x140564780]
nop dword [rax]
movq xmm3, qword [rbx + rax]
movdqa xmm4, xmm3
pandn xmm4, xmm1
pxor xmm3, xmm2
por xmm3, xmm4
movdqa xmm5, xmm3
pxor xmm5, xmm4
pandn xmm3, xmm4
pxor xmm3, xmm5
pxor xmm3, xmm0
movq qword [r14 + rax], xmm3
cmp rdx, rax
je 0x1404c80fa
add rax, 8
jmp 0x1404c80c0
cmp rcx, r12
je 0x1404c7c89
mov rax, rcx
not rax
add rax, r12
movabs rdx, 0x695707a61c558b85
sub rdx, rax
movabs rax, 0x96a8f859e3aa747b
xor rax, rdx
movabs r8, 0x16a8f859e3aa747b
and r8, rdx
lea rax, [rax + r8*2]
neg rax
movabs rdx, 0xa581f4f439902c1f
add rdx, qword [0x140686408]
xor rdx, r12
mov r8d, r12d
not r8d
and r8d, 3
mov r9, r12
and r9, 0xfffffffffffffffc
or r9, r8
and rdx, 0xfffffffffffffffc
or rdx, r9
cmp rdx, 0xffffffffffffffff
je 0x1404c819c
inc rcx
add rdx, 2
nop word cs:[rax + rax]
movzx r8d, byte [rbx + rcx - 1]
xor r8b, 0x67
mov byte [r14 + rcx - 1], r8b
test rdx, rdx
je 0x1404c819c
inc rcx
inc rdx
jmp 0x1404c8180
cmp rax, 3
jb 0x1404c7c89
lea rax, [r12 - 4]
nop dword [rax + rax]
movzx edx, byte [rbx + rcx]
mov r8d, edx
not r8b
and r8b, 0x67
xor dl, 0x98
or dl, r8b
mov r9d, edx
not r9b
xor dl, r9b
and dl, r8b
and r8b, r9b
xor dl, r9b
or dl, r8b
mov byte [r14 + rcx], dl
movzx edx, byte [rbx + rcx + 1]
not dl
movzx r8d, byte [0x140686410]
lea r9d, [r8 + 0x7d]
add r8b, 0xe5
xor r9b, r8b
and r8b, dl
xor dl, r9b
and dl, r9b
or dl, r8b
mov byte [r14 + rcx + 1], dl
movzx edx, byte [rbx + rcx + 2]
xor dl, 0x67
mov byte [r14 + rcx + 2], dl
movzx edx, byte [rbx + rcx + 3]
mov r8d, edx
xor r8b, 0x67
and r8b, dl
not dl
movzx r9d, byte [0x140686410]
add r9b, 0xe5
xor r9b, dl
not r9b
and r9b, dl
or r8b, r9b
mov byte [r14 + rcx + 3], r8b
cmp rax, rcx
je 0x1404c7c89
add rcx, 4
jmp 0x1404c81b0
mov r13d, 0x7ce8b830
mov r8d, 0x7ce8b82f
lea r11, [fcn.1404c7a20]
xor edi, edi
jmp 0x1404c828a
xor edi, r10d
neg r12d
mov eax, 2
sub eax, r12d
mov r12d, eax
cmp eax, r15d
jge 0x1404c7e06
mov eax, dword [0x140698dd0]
mov eax, dword [0x140698dd4]
cmp eax, 0x52
jg 0x1404c8290
movsxd rax, r12d
add rax, qword [rbp - 0x20]
nop word cs:[rax + rax]
mov edx, dword [0x140698dd0]
mov r10d, edx
not r10d
imul r10d, edx
test r10b, 1
je 0x1404c82d4
movzx edx, word [rax]
mov edx, dword [0x140698dd4]
cmp edx, 0x41
jge 0x1404c82b0
movzx r10d, word [rax]
mov eax, dword [0x140698dd0]
mov edx, dword [0x140686400]
add edx, eax
dec edx
imul edx, eax
test dl, 1
jne 0x1404c8320
mov edx, dword [0x140698dd0]
lea eax, [rdx - 1]
imul eax, edx
mov esi, dword [0x140686400]
add esi, r13d
xor edx, edx
div esi
test edx, edx
je 0x1404c8270
nop word cs:[rax + rax]
mov eax, dword [0x140686400]
add eax, r8d
lea edx, [r11 + r11]
add edx, 0x1b00
mov esi, edx
xor esi, eax
not eax
not edx
and edx, eax
or edx, esi
cmp edx, 0xffffffff
jne 0x1404c8320
jmp 0x1404c82f0