Function at 0x1400383d0
Capabilities:
Encode data using xor

Disassembly:
push rdi
sub rsp, 0x70
mov rax, rcx
mov qword [rsp + 0x80], rbx
xor r9d, r9d
mov rdi, rdx
mov r11, rcx
mov r10, rdx
and eax, 3
je 0x1400384bd
mov r8d, 4
sub r8, rax
mov eax, r9d
cmp r8, rdx
cmova r8, rdx
test r8, r8
je 0x1400384b7
cmp r8, 0x40
jb 0x1400384a0
movdqa xmm2, xmmword [0x1400897d0]
mov rdx, r8
movdqa xmm3, xmmword [0x1400897e0]
and rdx, 0xffffffffffffffc0
add rcx, 0x20
nop word [rax + rax]
movdqu xmm0, xmmword [rcx - 0x20]
add rax, 0x40
lea rcx, [rcx + 0x40]
psubb xmm0, xmm2
pxor xmm0, xmm3
movdqu xmmword [rcx - 0x60], xmm0
movdqu xmm0, xmmword [rcx - 0x50]
psubb xmm0, xmm2
pxor xmm0, xmm3
movdqu xmmword [rcx - 0x50], xmm0
movdqu xmm1, xmmword [rcx - 0x40]
psubb xmm1, xmm2
pxor xmm1, xmm3
movdqu xmmword [rcx - 0x40], xmm1
movdqu xmm0, xmmword [rcx - 0x30]
psubb xmm0, xmm2
pxor xmm0, xmm3
movdqu xmmword [rcx - 0x30], xmm0
cmp rax, rdx
jb 0x140038440
cmp rax, r8
jae 0x1400384b7
nop word [rax + rax]
movzx ecx, byte [rax + r11]
sub cl, 0x54
xor cl, 0xa5
mov byte [rax + r11], cl
inc rax
cmp rax, r8
jb 0x1400384a0
sub r10, r8
add r11, rax
mov rbx, r10
shr rbx, 2
test rbx, rbx
je 0x14003867a
cmp rbx, 8
jb 0x140038630
movdqa xmm4, xmmword [0x140089780]
mov rax, rbx
movdqa xmm5, xmmword [0x140089790]
and rax, 0xfffffffffffffff8
movaps xmmword [rsp + 0x60], xmm6
movdqa xmm6, xmmword [0x1400897c0]
movaps xmmword [rsp + 0x50], xmm7
movdqa xmm7, xmmword [0x1400897f0]
movaps xmmword [rsp + 0x40], xmm8
movdqa xmm8, xmmword [str.TTTT]
movaps xmmword [rsp + 0x30], xmm9
movdqa xmm9, xmmword [0x140089770]
movaps xmmword [rsp + 0x20], xmm10
movdqa xmm10, xmmword [0x1400897a0]
movaps xmmword [rsp + 0x10], xmm11
movdqa xmm11, xmmword [0x1400897b0]
movaps xmmword [rsp], xmm12
movdqa xmm12, xmmword [0x1400897e0]
movdqu xmm2, xmmword [r11 + r9*4]
movdqa xmm3, xmm2
movdqa xmm0, xmm2
psubd xmm3, xmm6
movdqa xmm1, xmm2
pand xmm3, xmm7
psubd xmm0, xmm4
pand xmm0, xmm5
psubd xmm1, xmm8
por xmm3, xmm0
pand xmm1, xmm9
por xmm3, xmm1
psubd xmm2, xmm10
pand xmm2, xmm11
por xmm3, xmm2
pxor xmm3, xmm12
movdqu xmmword [r11 + r9*4], xmm3
movdqu xmm2, xmmword [r11 + r9*4 + 0x10]
movdqa xmm3, xmm2
movdqa xmm0, xmm2
psubd xmm3, xmm6
movdqa xmm1, xmm2
pand xmm3, xmm7
psubd xmm0, xmm4
pand xmm0, xmm5
psubd xmm1, xmm8
por xmm3, xmm0
pand xmm1, xmm9
por xmm3, xmm1
psubd xmm2, xmm10
pand xmm2, xmm11
por xmm3, xmm2
pxor xmm3, xmm12
movdqu xmmword [r11 + r9*4 + 0x10], xmm3
add r9, 8
cmp r9, rax
jb 0x140038552
movaps xmm12, xmmword [rsp]
movaps xmm11, xmmword [rsp + 0x10]
movaps xmm10, xmmword [rsp + 0x20]
movaps xmm9, xmmword [rsp + 0x30]
movaps xmm8, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm6, xmmword [rsp + 0x60]
cmp r9, rbx
jae 0x14003867a
nop word [rax + rax]
mov edx, dword [r11 + r9*4]
lea r8d, [rdx - 0x5400]
and r8d, 0xff00
lea eax, [rdx - 0x54000000]
and eax, 0xff000000
or r8d, eax
lea eax, [rdx - 0x54]
movzx ecx, al
lea eax, [rdx - 0x540000]
or r8d, ecx
and eax, 0xff0000
or r8d, eax
xor r8d, 0xa5a5a5a5
mov dword [r11 + r9*4], r8d
inc r9
cmp r9, rbx
jb 0x140038630
mov rbx, qword [rsp + 0x80]
lea rcx, [r11 + r9*4]
and r10d, 3
jbe 0x1400386a4
nop dword [rax]
movzx eax, byte [rcx]
lea rcx, [rcx + 1]
sub al, 0x54
xor al, 0xa5
mov byte [rcx - 1], al
sub r10, 1
jne 0x140038690
mov rax, rdi
add rsp, 0x70
pop rdi
ret