Function at 0x1400413e0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov r13, r9
mov ebx, r8d
mov rsi, rcx
cmp dword [rsp + 0x98], 0
je 0x14004145e
mov eax, 0xffffff53
cmp ebx, 0x20
ja 0x140041acc
mov r8d, ebx
movabs rcx, 0x101010000
bt rcx, r8
jae 0x140041acc
mov dword [rsi + 0xf4], ebx
mov r15d, ebx
shr r15d, 2
lea eax, [r15 + 6]
lea r14, [rsi + 0xf0]
mov dword [rsi + 0xf0], eax
mov rcx, rsi
call fcn.1400d0c80
mov eax, r15d
cmp r15d, 8
jae 0x1400414a2
xor ecx, ecx
jmp 0x140041530
mov dword [rsi + 0xf4], ebx
mov r15d, ebx
shr r15d, 2
lea eax, [r15 + 6]
mov dword [rsi + 0xf0], eax
mov eax, 0xffffff53
cmp ebx, 0xf0
ja 0x140041acc
lea r14, [rsi + 0xf0]
mov r8d, ebx
mov rcx, rsi
call fcn.1400d0c80
cmp ebx, 4
jae 0x14004144e
jmp 0x140041540
mov ecx, eax
and ecx, 0xfffffff8
lea edx, [rax*4]
and edx, 0xffffffe0
xor r8d, r8d
pxor xmm0, xmm0
nop dword [rax + rax]
movdqu xmm1, xmmword [rsi + r8]
movdqu xmm2, xmmword [rsi + r8 + 0x10]
movdqa xmm3, xmm1
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm3
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [rsi + r8], xmm1
movdqu xmmword [rsi + r8 + 0x10], xmm2
add r8, 0x20
cmp rdx, r8
jne 0x1400414c0
cmp rcx, rax
je 0x140041540
mov edx, dword [rsi + rcx*4]
bswap edx
mov dword [rsi + rcx*4], edx
inc rcx
cmp rax, rcx
jne 0x140041530
mov eax, 0xffffff53
cmp bl, 0x10
je 0x14004174c
movzx ecx, bl
cmp ecx, 0x18
je 0x140041681
cmp ecx, 0x20
jne 0x140041acc
mov r10d, dword [rsi]
xor ecx, ecx
lea rdx, [0x1400dad90]
lea r8, [0x1400dbd90]
nop word cs:[rax + rax]
mov r9d, dword [rsi + rcx*8 + 0x1c]
mov r11d, r9d
shr r11d, 0xe
and r11d, 0x3fc
movzx ebx, byte [r11 + rdx + 0x803]
shl ebx, 0x18
xor ebx, r10d
mov r11d, r9d
shr r11d, 8
movzx r10d, r11b
movzx r10d, byte [rdx + r10*4 + 0xc02]
shl r10d, 0x10
movzx r15d, r9b
movzx ebp, byte [rdx + r15*4 + 1]
shl ebp, 8
xor ebp, r10d
xor ebp, ebx
mov r15d, r9d
shr r15d, 0x18
movzx r10d, byte [rdx + r15*4 + 0x400]
xor r10d, ebp
xor r10d, dword [rcx + r8]
mov dword [rsi + rcx*8 + 0x20], r10d
mov ebx, dword [rsi + rcx*8 + 4]
xor ebx, r10d
mov dword [rsi + rcx*8 + 0x24], ebx
xor ebx, dword [rsi + rcx*8 + 8]
mov dword [rsi + rcx*8 + 0x28], ebx
xor ebx, dword [rsi + rcx*8 + 0xc]
mov dword [rsi + rcx*8 + 0x2c], ebx
cmp rcx, 0x18
je 0x140041809
mov r11d, ebx
shr r11d, 0x18
movzx r11d, byte [rdx + r11*4 + 0x803]
shl r11d, 0x18
xor r11d, dword [rsi + rcx*8 + 0x10]
mov r15d, ebx
shr r15d, 0xe
and r15d, 0x3fc
movzx ebp, byte [r15 + rdx + 0xc02]
shl ebp, 0x10
movzx edi, bh
movzx edi, byte [rdx + rdi*4 + 1]
shl edi, 8
xor edi, ebp
movzx ebx, bl
movzx ebx, byte [rdx + rbx*4 + 0x400]
xor ebx, edi
xor ebx, r11d
mov dword [rsi + rcx*8 + 0x30], ebx
xor ebx, dword [rsi + rcx*8 + 0x14]
mov dword [rsi + rcx*8 + 0x34], ebx
xor ebx, dword [rsi + rcx*8 + 0x18]
mov dword [rsi + rcx*8 + 0x38], ebx
xor ebx, r9d
mov dword [rsi + rcx*8 + 0x3c], ebx
add rcx, 4
jmp 0x140041580
mov r11d, dword [rsi]
lea rcx, [rsi + 0x2c]
xor edx, edx
lea r8, [0x1400dad90]
lea r9, [0x1400dbd90]
nop dword [rax + rax]
mov r10d, dword [rcx - 0x18]
mov ebx, r10d
shr ebx, 0xe
and ebx, 0x3fc
movzx ebp, byte [rbx + r8 + 0x803]
shl ebp, 0x18
xor ebp, r11d
mov ebx, r10d
shr ebx, 8
movzx r11d, bl
movzx r11d, byte [r8 + r11*4 + 0xc02]
shl r11d, 0x10
movzx r15d, r10b
movzx r12d, byte [r8 + r15*4 + 1]
shl r12d, 8
xor r12d, r11d
xor r12d, ebp
mov r15d, r10d
shr r15d, 0x18
movzx r11d, byte [r8 + r15*4 + 0x400]
xor r11d, r12d
xor r11d, dword [rdx + r9]
mov dword [rcx - 0x14], r11d
mov ebp, dword [rcx - 0x28]
xor ebp, r11d
mov dword [rcx - 0x10], ebp
xor ebp, dword [rcx - 0x24]
mov dword [rcx - 0xc], ebp
xor ebp, dword [rcx - 0x20]
mov dword [rcx - 8], ebp
cmp rdx, 0x1c
je 0x140041738
xor ebp, dword [rcx - 0x1c]
mov dword [rcx - 4], ebp
xor ebp, r10d
mov dword [rcx], ebp
add rdx, 4
add rcx, 0x18
jmp 0x1400416a0
mov ecx, r10d
shr ecx, 0x10
mov byte [rsp + 0x20], r10b
mov byte [rsp + 0x27], bl
jmp 0x140041819
mov r11d, dword [rsi]
xor ecx, ecx
lea rdx, [0x1400dad90]
lea r8, [0x1400dbd90]
nop
mov r9d, dword [rsi + rcx*4 + 0xc]
mov r10d, r9d
shr r10d, 0xe
and r10d, 0x3fc
movzx ebx, byte [r10 + rdx + 0x803]
shl ebx, 0x18
xor ebx, r11d
mov r10d, r9d
shr r10d, 8
movzx r11d, r10b
movzx r11d, byte [rdx + r11*4 + 0xc02]
shl r11d, 0x10
movzx r15d, r9b
movzx ebp, byte [rdx + r15*4 + 1]
shl ebp, 8
xor ebp, r11d
xor ebp, ebx
mov ebx, r9d
shr ebx, 0x18
movzx r11d, byte [rdx + rbx*4 + 0x400]
xor r11d, ebp
xor r11d, dword [rcx + r8]
mov dword [rsi + rcx*4 + 0x10], r11d
mov ebp, dword [rsi + rcx*4 + 4]
xor ebp, r11d
mov dword [rsi + rcx*4 + 0x14], ebp
xor ebp, dword [rsi + rcx*4 + 8]
mov dword [rsi + rcx*4 + 0x18], ebp
xor ebp, r9d
mov dword [rsi + rcx*4 + 0x1c], ebp
add rcx, 4
cmp rcx, 0x28
jne 0x140041760
mov ecx, r9d
shr ecx, 0x10
mov byte [rsp + 0x20], r9b
mov byte [rsp + 0x27], r10b
mov byte [rsp + 0x24], cl
mov byte [rsp + 0x26], bl
jmp 0x140041822
mov ecx, r9d
shr ecx, 0x10
mov byte [rsp + 0x20], r9b
mov byte [rsp + 0x27], r11b
mov byte [rsp + 0x24], cl
mov byte [rsp + 0x26], r15b
mov ecx, dword [rsp + 0x90]
mov byte [rsp + 0x20], 0
mov byte [rsp + 0x27], 0
mov byte [rsp + 0x24], 0
mov byte [rsp + 0x26], 0
cmp ecx, 1
jne 0x140041aa9
mov ecx, dword [r14]
shl ecx, 2
test ecx, ecx
je 0x1400418d8
xor edx, edx
nop word cs:[rax + rax]
mov r8d, dword [rsi + rdx*4]
mov r9d, ecx
mov r10d, dword [rsi + r9*4]
mov dword [rsi + rdx*4], r10d
mov dword [rsi + r9*4], r8d
mov r8d, dword [rsi + rdx*4 + 4]
lea r9d, [rcx + 1]
mov r10d, dword [rsi + r9*4]
mov dword [rsi + rdx*4 + 4], r10d
mov dword [rsi + r9*4], r8d
mov r8d, dword [rsi + rdx*4 + 8]
lea r9d, [rcx + 2]
mov r10d, dword [rsi + r9*4]
mov dword [rsi + rdx*4 + 8], r10d
mov dword [rsi + r9*4], r8d
mov ebx, dword [rsi + rdx*4 + 0xc]
lea r8d, [rcx + 3]
mov r9d, dword [rsi + r8*4]
mov dword [rsi + rdx*4 + 0xc], r9d
mov dword [rsi + r8*4], ebx
add rdx, 4
add ecx, 0xfffffffc
cmp rdx, rcx
jb 0x140041860
mov byte [rsp + 0x20], bl
mov byte [rsp + 0x27], bh
mov ecx, ebx
shr ecx, 0x10
mov byte [rsp + 0x24], cl
shr ebx, 0x18
mov byte [rsp + 0x26], bl
mov byte [rsp + 0x20], 0
mov byte [rsp + 0x27], 0
mov byte [rsp + 0x24], 0
mov byte [rsp + 0x26], 0
cmp dword [r14], 2
jb 0x140041aa9
lea rcx, [rsi + 0x1c]
mov edx, 1
lea r8, [0x1400dad90]
lea r9, [0x1400dbdc0]
nop dword [rax]
mov ebx, dword [rcx - 0xc]
mov r10d, ebx
movzx ebp, bh
mov r11d, ebx
shr r11d, 0x18
movzx r11d, byte [r8 + r11*4 + 0x400]
shr r10d, 0xe
and r10d, 0x3fc
movzx r10d, byte [r10 + r8 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx edi, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rdi*4 + 0x800]
mov ebx, dword [rcx - 8]
movzx r11d, byte [r8 + r11*4 + 0x400]
xor r10d, dword [r9 + r11*4 + 0xc00]
mov dword [rcx - 0xc], r10d
mov r10d, ebx
movzx ebp, bh
mov r11d, ebx
shr r11d, 0x18
movzx r11d, byte [r8 + r11*4 + 0x400]
shr r10d, 0xe
and r10d, 0x3fc
movzx r10d, byte [r10 + r8 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx edi, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rdi*4 + 0x800]
movzx r11d, byte [r8 + r11*4 + 0x400]
xor r10d, dword [r9 + r11*4 + 0xc00]
mov dword [rcx - 8], r10d
mov ebx, dword [rcx - 4]
mov r10d, ebx
movzx ebp, bh
mov r11d, ebx
shr r11d, 0x18
movzx r11d, byte [r8 + r11*4 + 0x400]
shr r10d, 0xe
and r10d, 0x3fc
movzx r10d, byte [r10 + r8 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx edi, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rdi*4 + 0x800]
movzx r11d, byte [r8 + r11*4 + 0x400]
xor r10d, dword [r9 + r11*4 + 0xc00]
mov dword [rcx - 4], r10d
mov ebx, dword [rcx]
mov r10d, ebx
movzx ebp, bh
mov r11d, ebx
shr r11d, 0x18
movzx r11d, byte [r8 + r11*4 + 0x400]
shr r10d, 0xe
and r10d, 0x3fc
movzx r10d, byte [r10 + r8 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx edi, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rdi*4 + 0x800]
movzx r11d, byte [r8 + r11*4 + 0x400]
xor r10d, dword [r9 + r11*4 + 0xc00]
mov dword [rcx], r10d
inc edx
add rcx, 0x10
cmp edx, dword [r14]
jb 0x140041910
test rsi, rsi
je 0x140041acc
add rsi, 0xf8
test r13, r13
je 0x140041ac2
movdqu xmm0, xmmword [r13]
jmp 0x140041ac6
pxor xmm0, xmm0
movdqu xmmword [rsi], xmm0
xor eax, eax
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret