Function at 0x1400028e0
Capabilities:
Encode data using xor

Disassembly:
push rsi
push r12
push r13
push r14
push r15
sub rsp, 0x90
mov rax, qword [0x140045100]
xor rax, rsp
mov qword [rsp + 0x60], rax
movsxd r15, ecx
lea rax, [0x140046c40]
imul r12, r15, 0x190
mov rsi, r9
movzx r14d, dl
mov r13d, r8d
cmp qword [r12 + rax + 0x168], 0
jne 0x140002930
mov eax, 0x80000004
jmp 0x140002c16
cmp r14b, 0x10
jbe 0x140002940
mov eax, 0x8000000b
jmp 0x140002c16
mov qword [rsp + 0xc8], rbx
mov qword [rsp + 0x88], rbp
mov qword [rsp + 0x80], rdi
movaps xmmword [rsp + 0x70], xmm6
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
call fcn.1400248d8
call fcn.1400248ac
movsx ecx, al
lea rdi, [rsp + 0x21]
mov ebp, eax
mov byte [rsp + 0x20], 0
mov ebx, 1
movd xmm6, ecx
punpcklbw xmm6, xmm6
punpcklwd xmm6, xmm6
pshufd xmm6, xmm6, 0
call fcn.1400248ac
mov ecx, eax
call fcn.1400248d8
call fcn.1400248ac
inc ebx
mov byte [rdi], al
lea rdi, [rdi + 1]
cmp ebx, 0x19
jb 0x140002994
movdqu xmm0, xmmword [rsp + 0x26]
movzx eax, bpl
mov byte [rsp + 0x22], bpl
xor al, 0x52
mov r8d, r13d
mov byte [rsp + 0x21], al
movdqa xmm1, xmm6
pxor xmm1, xmm0
sar r8d, 8
movzx eax, bpl
movd edx, xmm1
xor al, r14b
movdqa xmm0, xmm1
psrldq xmm0, 1
mov byte [rsp + 0x23], al
movzx eax, r8b
xor al, bpl
xor r8b, r13b
mov byte [rsp + 0x24], al
xor r8b, r14b
movzx eax, r13b
xor r8b, bpl
xor al, bpl
xor r8b, 0x52
mov byte [rsp + 0x25], al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 2
movdqu xmmword [rsp + 0x26], xmm1
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 3
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 4
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 5
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 6
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 7
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 8
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 9
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 0xa
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 0xb
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 0xc
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm0, 0xd
xor dl, al
movd eax, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 0xf
psrldq xmm0, 0xe
xor dl, al
movd eax, xmm0
xor dl, al
movd eax, xmm1
lea rbx, [0x140046c40]
lea rcx, [rbx + 0x176]
add rcx, r12
xor dl, al
xor dl, byte [rsp + 0x37]
xor dl, byte [rsp + 0x36]
xor r8b, dl
mov byte [rsp + 0x38], r8b
call fcn.14000baf0
lea r8, [rsp + 0x40]
mov ecx, r15d
lea rdx, [rsp + 0x20]
call fcn.140001940
lea rcx, [rbx + 0x176]
mov edi, eax
add rcx, r12
call fcn.14000bb10
mov rbx, qword [rsp + 0xc8]
xor edx, edx
mov r9d, r14d
mov r8d, edx
cmp r14d, 0x40
jb 0x140002bcf
movsxd rcx, r14d
lea r10, [rsi - 1]
add r10, rcx
lea rcx, [rsp + rcx + 0x45]
cmp rsi, rcx
ja 0x140002b6c
lea rax, [rsp + 0x46]
cmp r10, rax
jae 0x140002bcf
mov eax, 0xffffffc0
mov rcx, rsi
and r9, rax
lea rax, [rsp + 0x76]
sub rcx, rax
nop
lea rax, [rsp + 0x76]
add r8d, 0x40
add rax, rdx
movdqu xmm0, xmmword [rax - 0x30]
movdqu xmm1, xmmword [rax - 0x10]
pxor xmm0, xmm6
movdqu xmmword [rax + rcx], xmm0
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm1, xmm6
pxor xmm0, xmm6
movdqu xmmword [rsi + rdx + 0x10], xmm0
movdqu xmm0, xmmword [rax]
movdqu xmmword [rsi + rdx + 0x20], xmm1
pxor xmm0, xmm6
movdqu xmmword [rsi + rdx + 0x30], xmm0
add rdx, 0x40
cmp rdx, r9
jl 0x140002b80
movaps xmm6, xmmword [rsp + 0x70]
mov rdx, r14
movsxd rcx, r8d
cmp rcx, r14
jge 0x140002c04
lea r8, [rsp + 0x46]
sub r8, rsi
lea rax, [rcx + rsi]
sub rdx, rcx
nop
movzx ecx, bpl
xor cl, byte [r8 + rax]
mov byte [rax], cl
lea rax, [rax + 1]
sub rdx, 1
jne 0x140002bf0
mov rbp, qword [rsp + 0x88]
mov eax, edi
mov rdi, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.14001af60
add rsp, 0x90
pop r15
pop r14
pop r13
pop r12
pop rsi
ret