Function at 0x14003a720
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
lea rbp, [rsp - 0x418]
sub rsp, 0x518
mov rax, qword [0x140088040]
xor rax, rsp
mov qword [rbp + 0x400], rax
cmp dword [rcx + 0x148], 1
mov rdi, rdx
mov rax, qword [rbp + 0x480]
mov rbx, rcx
mov r9, qword [rbp + 0x488]
mov qword [rsp + 0x60], rax
mov rax, qword [rbp + 0x490]
mov qword [rsp + 0x68], rax
jne 0x14003acd0
mov r13, qword [rcx + 8]
lea rax, [r13 - 0x10]
cmp rax, 0x3f0
ja 0x14003acd0
mov ecx, dword [rcx + 0x14c]
call fcn.140023c20
mov qword [rsp + 0x30], rax
mov r12, rax
test rax, rax
je 0x14003acd0
movzx esi, byte [rax + 0x10]
lea eax, [rsi + rsi]
lea r11d, [rax + 2]
mov dword [rsp + 0x58], eax
cmp r11, r13
ja 0x14003acd0
lea rax, [rbp]
mov rdx, rdi
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.140039030
mov edi, eax
test eax, eax
jne 0x14003aca4
xor eax, eax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x48], rax
call qword [r12 + 0x38]
mov qword [rsp + 0x40], rax
mov rcx, rax
test rax, rax
jne 0x14003a854
mov rax, qword [rsp + 0x38]
mov edi, 0xffffae80
test rax, rax
je 0x14003aca4
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003a83b
mov eax, dword [rax + 0x14]
add eax, eax
movsxd r8, eax
je 0x14003a836
mov rax, qword [fcn.140065540]
xor edx, edx
call rax
mov rcx, qword [rsp + 0x48]
call fcn.14004f190
mov rax, qword [fcn.140065540]
lea rcx, [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 0x18]
call rax
jmp 0x14003aca4
xorps xmm0, xmm0
mov qword [rsp + 0x568], r14
xor edi, edi
mov qword [rsp + 0x510], r15
mov dword [rsp + 0x54], edi
mov rax, r12
mov qword [rsp + 0x38], rax
mov r14, rsi
lea rbx, [rbp + 1]
mov r15, rsi
movups xmmword [rbp - 0x80], xmm0
movups xmmword [rbp - 0x70], xmm0
movups xmmword [rbp - 0x60], xmm0
movups xmmword [rbp - 0x50], xmm0
test esi, esi
je 0x14003aa04
movzx r12d, byte [r12 + 0x10]
nop dword [rax]
cmp r15, r12
mov rsi, r15
cmovae rsi, r12
test rax, rax
je 0x14003a9fa
call qword [rax + 0x18]
mov edi, eax
test eax, eax
jne 0x14003a9ff
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14003a9fa
mov rcx, qword [rsp + 0x40]
lea rdx, [rbp + 1]
mov r8, r13
add rdx, r14
sub r8, r14
dec r8
call qword [rax + 0x20]
mov edi, eax
test eax, eax
jne 0x14003a9ff
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14003a9fa
mov rcx, qword [rsp + 0x40]
lea r8d, [rdi + 4]
lea rdx, [rsp + 0x54]
call qword [rax + 0x20]
mov edi, eax
test eax, eax
jne 0x14003a9ff
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14003a9fa
mov rcx, qword [rsp + 0x40]
lea rdx, [rbp - 0x80]
call qword [rax + 0x28]
mov edi, eax
test eax, eax
jne 0x14003a9ff
xor ecx, ecx
test rsi, rsi
je 0x14003a9e2
cmp rsi, 0x40
jb 0x14003a9d0
lea rdx, [rsi - 1]
add rdx, rbx
lea rax, [rsp + rsi + 0x7f]
cmp rbx, rax
ja 0x14003a96c
lea rax, [rbp - 0x80]
cmp rdx, rax
jae 0x14003a9d0
mov rax, rsi
and rax, 0xffffffffffffffc0
movdqu xmm0, xmmword [rbx]
movdqu xmm1, xmmword [rbp + rcx - 0x80]
xorps xmm1, xmm0
movdqu xmmword [rbx], xmm1
movdqu xmm0, xmmword [rbx + 0x10]
movdqu xmm1, xmmword [rbp + rcx - 0x70]
xorps xmm1, xmm0
movdqu xmmword [rbx + 0x10], xmm1
movdqu xmm0, xmmword [rbx + 0x20]
movdqu xmm1, xmmword [rbp + rcx - 0x60]
xorps xmm1, xmm0
movdqu xmmword [rbx + 0x20], xmm1
movdqu xmm0, xmmword [rbx + 0x30]
movdqu xmm1, xmmword [rbp + rcx - 0x50]
add rcx, 0x40
xorps xmm1, xmm0
movdqu xmmword [rbx + 0x30], xmm1
add rbx, 0x40
cmp rcx, rax
jb 0x14003a973
cmp rcx, rsi
jae 0x14003a9e2
nop
movzx eax, byte [rbp + rcx - 0x80]
inc rcx
xor byte [rbx], al
inc rbx
cmp rcx, rsi
jb 0x14003a9d0
inc byte [rsp + 0x57]
sub r15, rsi
je 0x14003a9ff
mov rcx, qword [rsp + 0x40]
mov rax, qword [rsp + 0x38]
jmp 0x14003a8a0
mov edi, 0xffffaf00
mov r12, qword [rsp + 0x30]
mov rax, qword [fcn.140065540]
lea rcx, [rbp - 0x80]
xor edx, edx
lea r8d, [rdx + 0x40]
call rax
mov r15, qword [rsp + 0x510]
test edi, edi
jne 0x14003ac43
lea rax, [rsp + 0x38]
mov rdx, r13
sub rdx, r14
mov qword [rsp + 0x20], rax
lea rbx, [rbp + 1]
dec rdx
add rbx, r14
lea r8, [rbp + 1]
mov rcx, rbx
mov r9, r14
call fcn.14003a150
mov edi, eax
test eax, eax
jne 0x14003ac43
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14003aab3
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003aa76
call qword [rax + 0x40]
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003aa9f
mov eax, dword [rax + 0x14]
add eax, eax
movsxd r8, eax
je 0x14003aa9a
mov rax, qword [fcn.140065540]
xor edx, edx
call rax
mov rcx, qword [rsp + 0x48]
call fcn.14004f190
mov rax, qword [fcn.140065540]
lea rcx, [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 0x18]
call rax
lea r8, [rbp - 0x40]
xor edx, edx
xor ecx, ecx
call qword [r12 + 0x30]
mov edi, eax
test eax, eax
jne 0x14003ac9c
movzx r8d, byte [rbp]
xor ecx, ecx
test r14, r14
je 0x14003ab75
cmp r14, 0x20
jb 0x14003ab60
mov rax, r14
xorps xmm3, xmm3
and rax, 0xffffffffffffffe0
xorps xmm2, xmm2
movdqu xmm0, xmmword [rbp + rcx - 0x40]
movdqu xmm1, xmmword [rbx]
xorps xmm1, xmm0
movdqu xmm0, xmmword [rbx + 0x10]
add rbx, 0x20
orps xmm3, xmm1
movdqu xmm1, xmmword [rbp + rcx - 0x30]
add rcx, 0x20
xorps xmm1, xmm0
orps xmm2, xmm1
cmp rcx, rax
jb 0x14003aaf1
orps xmm2, xmm3
movdqa xmm0, xmm2
psrldq xmm0, 8
orps xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 4
orps xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 2
orps xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 1
orps xmm2, xmm0
movd eax, xmm2
or r8b, al
cmp rcx, r14
jae 0x14003ab75
nop
movzx eax, byte [rbp + rcx - 0x40]
inc rcx
xor al, byte [rbx]
inc rbx
or r8b, al
cmp rcx, r14
jb 0x14003ab60
mov eax, dword [rsp + 0x58]
mov rsi, r13
sub rsi, rax
xor r9d, r9d
add rsi, 0xfffffffffffffffe
xor r10d, r10d
xor r11d, r11d
xor dl, dl
xor ecx, ecx
cmp rsi, 2
jb 0x14003abd6
lea rdi, [rsi - 1]
nop word [rax + rax]
or dl, byte [rbx + rcx]
movzx eax, dl
neg al
or al, dl
or dl, byte [rbx + rcx + 1]
not al
add rcx, 2
movzx eax, al
shr rax, 7
add r9, rax
movzx eax, dl
neg al
or al, dl
not al
movzx eax, al
shr rax, 7
add r10, rax
cmp rcx, rdi
jb 0x14003aba0
cmp rcx, rsi
jae 0x14003abef
or dl, byte [rcx + rbx]
movzx eax, dl
neg al
or al, dl
not al
movzx r11d, al
shr r11, 7
lea rax, [r10 + r9]
add rax, r11
add rbx, rax
movzx eax, byte [rbx]
inc rbx
xor al, 1
or r8b, al
je 0x14003ac10
mov edi, 0xffffbf00
jmp 0x14003ac9c
sub r13, rbx
lea r8, [rbp]
add r8, r13
cmp r8, qword [rbp + 0x498]
jbe 0x14003ac2a
mov edi, 0xffffbc00
jmp 0x14003ac9c
mov rax, qword [rsp + 0x60]
mov rdx, rbx
mov rcx, qword [rsp + 0x68]
mov qword [rax], r8
call fcn.140065900
xor edi, edi
jmp 0x14003ac9c
mov rax, qword [rsp + 0x38]
test rax, rax
je 0x14003ac9c
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003ac5f
call qword [rax + 0x40]
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003ac88
mov eax, dword [rax + 0x14]
add eax, eax
movsxd r8, eax
je 0x14003ac83
mov rax, qword [fcn.140065540]
xor edx, edx
call rax
mov rcx, qword [rsp + 0x48]
call fcn.14004f190
mov rax, qword [fcn.140065540]
lea rcx, [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 0x18]
call rax
mov r14, qword [rsp + 0x568]
mov rax, qword [fcn.140065540]
lea rcx, [rbp]
xor edx, edx
mov r8d, 0x400
call rax
mov rax, qword [fcn.140065540]
lea rcx, [rbp - 0x40]
xor edx, edx
lea r8d, [rdx + 0x40]
call rax
mov eax, edi
jmp 0x14003acd5
mov eax, 0xffffbf80
mov rcx, qword [rbp + 0x400]
xor rcx, rsp
call fcn.140042de0
add rsp, 0x518
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret