Function at 0x1400221b0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x70
mov rsi, rcx
mov eax, dword [rsp + 0xd0]
mov dword [rsp + 0x20], eax
call fcn.14002ba90
mov byte [rsp + 0x2f], 5
movzx eax, byte [rsp + 0x2f]
movzx ecx, al
mov eax, 0x18e85e7
xor edx, edx
div ecx
mov byte [rsp + 0x2d], dl
movzx eax, byte [rsp + 0x2d]
movzx eax, al
movabs rcx, 0x539127a2b7a8
mov qword [rsp + rax*8 + 0x30], rcx
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x18e85e7
jne 0x14002222a
lea rax, [rsp + 0x30]
cmp rax, 0x44c6
ja 0x140022223
movabs eax, dword [0xf39eb2d2444b60f]
mov dh, 0x44
and al, 0x2d
movzx eax, byte [rsp + 0x2d]
jmp 0x140022263
movzx eax, byte [rsp + 0x2d]
mov byte [rsp + 0x2e], al
inc byte [rsp + 0x2e]
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x18e84f6
je 0x14002224e
dec byte [rsp + 0x2e]
lea rax, [rsp + 0x2e]
cmp rax, 0x44c6
ja 0x14002225e
mov ebx, 0xb60f31f1
and al, 0x2e
movzx eax, byte [rsp + 0x2e]
movzx eax, al
mov rcx, qword [rsp + rax*8 + 0x30]
mov byte [rsp + 0x2f], 5
movzx eax, byte [rsp + 0x2f]
movzx r8d, al
mov eax, 0x18fe0d3
xor edx, edx
div r8d
mov byte [rsp + 0x2d], dl
movzx eax, byte [rsp + 0x2d]
movzx eax, al
movabs rdx, 0x2587247454fc0
mov qword [rsp + rax*8 + 0x30], rdx
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x18fe0d3
jne 0x1400222c6
lea rax, [rsp + 0x30]
cmp rax, 0x1912
ja 0x1400222bf
jmp 0x16446d8d2
movzx eax, byte [rsp + 0x2d]
jmp 0x1400222ff
movzx eax, byte [rsp + 0x2d]
mov byte [rsp + 0x2e], al
inc byte [rsp + 0x2e]
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x18fdfe2
je 0x1400222ea
dec byte [rsp + 0x2e]
lea rax, [rsp + 0x2e]
cmp rax, 0x1912
ja 0x1400222fa
mov ebx, 0xb60f31f1
and al, 0x2e
movzx eax, byte [rsp + 0x2e]
movzx eax, al
mov r8, qword [rsp + rax*8 + 0x30]
mov byte [rsp + 0x2f], 3
movzx eax, byte [rsp + 0x2f]
movzx r9d, al
mov eax, 0x187d653
xor edx, edx
div r9d
mov byte [rsp + 0x2d], dl
movzx eax, byte [rsp + 0x2d]
movzx eax, al
movabs rdx, 0x15039b3e10bd4
mov qword [rsp + rax*8 + 0x30], rdx
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x187d653
jne 0x140022362
lea rax, [rsp + 0x30]
cmp rax, 0x4bf2
ja 0x14002235b
movabs eax, dword [0xf39eb2d2444b60f]
mov dh, 0x44
and al, 0x2d
movzx eax, byte [rsp + 0x2d]
jmp 0x14002239b
movzx eax, byte [rsp + 0x2d]
mov byte [rsp + 0x2e], al
inc byte [rsp + 0x2e]
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x187d562
je 0x140022386
dec byte [rsp + 0x2e]
lea rax, [rsp + 0x2e]
cmp rax, 0x4bf2
ja 0x140022396
mov ebx, 0xb60f31f1
and al, 0x2e
movzx eax, byte [rsp + 0x2e]
movzx eax, al
mov r9, qword [rsp + rax*8 + 0x30]
mov r10, qword [rsi + 8]
mov r11, qword [rsi + 0x10]
mov byte [rsp + 0x2f], 7
movzx eax, byte [rsp + 0x2f]
movzx edi, al
mov eax, 0x18dbac7
xor edx, edx
div edi
mov byte [rsp + 0x2d], dl
movzx eax, byte [rsp + 0x2d]
movzx eax, al
mov qword [rsp + rax*8 + 0x30], 0
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x18dbac7
jne 0x1400223fe
lea rax, [rsp + 0x30]
cmp rax, 0x15e6
ja 0x1400223f7
movabs eax, dword [0xf39eb2d2444b60f]
mov dh, 0x44
and al, 0x2d
movzx eax, byte [rsp + 0x2d]
jmp 0x140022437
movzx eax, byte [rsp + 0x2d]
mov byte [rsp + 0x2e], al
inc byte [rsp + 0x2e]
movzx eax, byte [rsp + 0x2d]
movzx eax, al
cmp qword [rsp + rax + 0x30], 0x18db9d6
je 0x140022422
dec byte [rsp + 0x2e]
lea rax, [rsp + 0x2e]
cmp rax, 0x15e6
ja 0x140022432
mov ebx, 0xb60f31f1
and al, 0x2e
movzx eax, byte [rsp + 0x2e]
movzx eax, al
mov rax, qword [rsp + rax*8 + 0x30]
mov rdx, r11
sub rdx, rax
je 0x1400225ac
add cl, 0x5d
add r8b, 0x60
cmp rdx, 8
jb 0x140022590
movzx r14d, cl
movzx ebp, r8b
movzx ebx, r9b
cmp rdx, 0x20
jae 0x140022475
xor edi, edi
jmp 0x140022521
mov rdi, rdx
and rdi, 0xffffffffffffffe0
movd xmm0, r14d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movd xmm1, ebp
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0
pshufd xmm1, xmm1, 0
movd xmm2, ebx
punpcklbw xmm2, xmm2
pshuflw xmm2, xmm2, 0
pshufd xmm2, xmm2, 0
lea r15, [rax + r10]
add r15, 0x10
xor r12d, r12d
movdqa xmm3, xmmword [0x140045430]
nop word cs:[rax + rax]
movdqu xmm4, xmmword [r15 + r12 - 0x10]
movdqu xmm5, xmmword [r15 + r12]
paddb xmm4, xmm0
paddb xmm5, xmm0
pxor xmm4, xmm1
pxor xmm5, xmm1
psubb xmm4, xmm2
psubb xmm5, xmm2
paddb xmm4, xmm3
paddb xmm5, xmm3
movdqu xmmword [r15 + r12 - 0x10], xmm4
movdqu xmmword [r15 + r12], xmm5
add r12, 0x20
cmp rdi, r12
jne 0x1400224d0
cmp rdx, rdi
je 0x1400225ac
test dl, 0x18
je 0x14002258a
mov r15, rdx
and r15, 0xfffffffffffffff8
movd xmm0, r14d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
movd xmm1, ebp
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0
movd xmm2, ebx
punpcklbw xmm2, xmm2
pshuflw xmm2, xmm2, 0
lea rbx, [r10 + rax]
add rax, r15
movdqa xmm3, xmmword [0x140045440]
nop
movq xmm4, qword [rbx + rdi]
paddb xmm4, xmm0
pxor xmm4, xmm1
psubb xmm4, xmm2
paddb xmm4, xmm3
movq qword [rbx + rdi], xmm4
add rdi, 8
cmp r15, rdi
jne 0x140022560
cmp rdx, r15
jne 0x140022590
jmp 0x1400225ac
add rax, rdi
nop dword [rax]
movzx edx, byte [r10 + rax]
add dl, cl
xor dl, r8b
sub dl, r9b
add dl, 0xa1
mov byte [r10 + rax], dl
inc rax
cmp r11, rax
jne 0x140022590
mov rax, rsi
add rsp, 0x70
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret