Function at 0x14003ac40
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 0x14003ad2d
mov r8d, 4
sub r8, rax
mov eax, r9d
cmp r8, rdx
cmova r8, rdx
test r8, r8
je 0x14003ad27
cmp r8, 0x40
jb 0x14003ad10
movdqa xmm2, xmmword [0x14008b160]
mov rdx, r8
movdqa xmm3, xmmword [0x14008b1c0]
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 0x14003acb0
cmp rax, r8
jae 0x14003ad27
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 0x14003ad10
sub r10, r8
add r11, rax
mov rbx, r10
shr rbx, 2
test rbx, rbx
je 0x14003aeea
cmp rbx, 8
jb 0x14003aea0
movdqa xmm4, xmmword [0x14008b0a0]
mov rax, rbx
movdqa xmm5, xmmword [0x14008b0b0]
and rax, 0xfffffffffffffff8
movaps xmmword [rsp + 0x60], xmm6
movdqa xmm6, xmmword [0x14008b150]
movaps xmmword [rsp + 0x50], xmm7
movdqa xmm7, xmmword [0x14008b230]
movaps xmmword [rsp + 0x40], xmm8
movdqa xmm8, xmmword [str.TTTT]
movaps xmmword [rsp + 0x30], xmm9
movdqa xmm9, xmmword [0x14008b090]
movaps xmmword [rsp + 0x20], xmm10
movdqa xmm10, xmmword [0x14008b0d0]
movaps xmmword [rsp + 0x10], xmm11
movdqa xmm11, xmmword [0x14008b0e0]
movaps xmmword [rsp], xmm12
movdqa xmm12, xmmword [0x14008b1c0]
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 0x14003adc2
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 0x14003aeea
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 0x14003aea0
mov rbx, qword [rsp + 0x80]
lea rcx, [r11 + r9*4]
and r10d, 3
jbe 0x14003af14
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 0x14003af00
mov rax, rdi
add rsp, 0x70
pop rdi
ret