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

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x30
mov rdi, r9
mov ebx, r8d
mov rsi, rcx
cmp dword [rsp + 0x98], 0
je 0x14003bdfc
mov eax, 0xffffff53
cmp ebx, 0x20
ja 0x14003c44e
mov r8d, ebx
movabs rcx, 0x101010000
bt rcx, r8
jae 0x14003c44e
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.1400ca7f0
mov eax, r15d
cmp r15d, 8
jae 0x14003be40
xor ecx, ecx
jmp 0x14003bed0
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 0x14003c44e
lea r14, [rsi + 0xf0]
mov r8d, ebx
mov rcx, rsi
call fcn.1400ca7f0
cmp ebx, 4
jae 0x14003bdec
jmp 0x14003bee0
mov ecx, eax
and ecx, 0xfffffff8
mov edx, eax
shr edx, 3
shl rdx, 5
xor r8d, r8d
pxor xmm0, xmm0
nop word cs:[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 0x14003be60
cmp rcx, rax
je 0x14003bee0
mov edx, dword [rsi + rcx*4]
bswap edx
mov dword [rsi + rcx*4], edx
inc rcx
cmp rax, rcx
jne 0x14003bed0
mov eax, 0xffffff53
cmp ebx, 0x10
je 0x14003c019
cmp ebx, 0x18
je 0x14003c0ce
cmp ebx, 0x20
jne 0x14003c44e
mov r10d, dword [rsi]
xor ecx, ecx
lea r15, [0x1400d3d90]
lea r8, [0x1400d4d90]
nop word cs:[rax + rax]
mov r9d, dword [rsi + rcx*8 + 0x1c]
mov r11d, r9d
shr r11d, 0x10
movzx edx, r11b
movzx edx, byte [r15 + rdx*4 + 0x803]
shl edx, 0x18
xor edx, r10d
mov ebx, r9d
shr ebx, 8
movzx r10d, bl
movzx r10d, byte [r15 + r10*4 + 0xc02]
shl r10d, 0x10
movzx r12d, r9b
movzx ebp, byte [r15 + r12*4 + 1]
shl ebp, 8
xor ebp, r10d
xor ebp, edx
mov r12d, r9d
shr r12d, 0x18
movzx r10d, byte [r15 + r12*4 + 0x400]
xor r10d, ebp
xor r10d, dword [rcx + r8]
mov dword [rsi + rcx*8 + 0x20], r10d
mov edx, dword [rsi + rcx*8 + 4]
xor edx, r10d
mov dword [rsi + rcx*8 + 0x24], edx
xor edx, dword [rsi + rcx*8 + 8]
mov dword [rsi + rcx*8 + 0x28], edx
xor edx, dword [rsi + rcx*8 + 0xc]
mov dword [rsi + rcx*8 + 0x2c], edx
cmp rcx, 0x18
je 0x14003c190
mov r11d, edx
shr r11d, 0x18
movzx r11d, byte [r15 + r11*4 + 0x803]
shl r11d, 0x18
xor r11d, dword [rsi + rcx*8 + 0x10]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [r15 + rbx*4 + 0xc02]
shl ebx, 0x10
movzx ebp, dh
movzx ebp, byte [r15 + rbp*4 + 1]
shl ebp, 8
xor ebp, ebx
movzx edx, dl
movzx edx, byte [r15 + rdx*4 + 0x400]
xor edx, ebp
xor edx, r11d
mov dword [rsi + rcx*8 + 0x30], edx
xor edx, dword [rsi + rcx*8 + 0x14]
mov dword [rsi + rcx*8 + 0x34], edx
xor edx, dword [rsi + rcx*8 + 0x18]
mov dword [rsi + rcx*8 + 0x38], edx
xor edx, r9d
mov dword [rsi + rcx*8 + 0x3c], edx
add rcx, 4
jmp 0x14003bf20
mov ebx, dword [rsi]
xor ecx, ecx
lea rdx, [0x1400d3d90]
lea r8, [0x1400d4d90]
nop dword [rax + rax]
mov r10d, dword [rsi + rcx*4 + 0xc]
mov r9d, r10d
shr r9d, 0x10
movzx r11d, r9b
movzx ebp, byte [rdx + r11*4 + 0x803]
shl ebp, 0x18
xor ebp, ebx
mov r11d, r10d
shr r11d, 8
movzx ebx, r11b
movzx ebx, byte [rdx + rbx*4 + 0xc02]
shl ebx, 0x10
movzx r15d, r10b
movzx r12d, byte [rdx + r15*4 + 1]
shl r12d, 8
xor r12d, ebx
xor r12d, ebp
mov r15d, r10d
shr r15d, 0x18
movzx ebx, byte [rdx + r15*4 + 0x400]
xor ebx, r12d
xor ebx, dword [rcx + r8]
mov dword [rsi + rcx*4 + 0x10], ebx
mov ebp, dword [rsi + rcx*4 + 4]
xor ebp, ebx
mov dword [rsi + rcx*4 + 0x14], ebp
xor ebp, dword [rsi + rcx*4 + 8]
mov dword [rsi + rcx*4 + 0x18], ebp
xor ebp, r10d
mov dword [rsi + rcx*4 + 0x1c], ebp
add rcx, 4
cmp rcx, 0x28
jne 0x14003c030
mov byte [rsp + 0x28], r10b
mov byte [rsp + 0x2f], r11b
mov byte [rsp + 0x2c], r9b
jmp 0x14003c1b3
mov r11d, dword [rsi]
lea rcx, [rsi + 0x2c]
xor edx, edx
lea r8, [0x1400d3d90]
lea r9, [0x1400d4d90]
nop word cs:[rax + rax]
mov r10d, dword [rcx - 0x18]
mov ebx, r10d
shr ebx, 0x10
movzx r15d, bl
movzx r15d, byte [r8 + r15*4 + 0x803]
shl r15d, 0x18
xor r15d, r11d
mov ebp, r10d
shr ebp, 8
movzx r11d, bpl
movzx r11d, byte [r8 + r11*4 + 0xc02]
shl r11d, 0x10
movzx r12d, r10b
movzx r12d, byte [r8 + r12*4 + 1]
shl r12d, 8
xor r12d, r11d
xor r12d, r15d
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 r12d, dword [rcx - 0x28]
xor r12d, r11d
mov dword [rcx - 0x10], r12d
xor r12d, dword [rcx - 0x24]
mov dword [rcx - 0xc], r12d
xor r12d, dword [rcx - 0x20]
mov dword [rcx - 8], r12d
cmp rdx, 0x1c
je 0x14003c1a5
xor r12d, dword [rcx - 0x1c]
mov dword [rcx - 4], r12d
xor r12d, r10d
mov dword [rcx], r12d
add rdx, 4
add rcx, 0x18
jmp 0x14003c0f0
mov byte [rsp + 0x28], r9b
mov byte [rsp + 0x2f], bl
mov byte [rsp + 0x2c], r11b
mov byte [rsp + 0x2e], r12b
jmp 0x14003c1b8
mov byte [rsp + 0x28], r10b
mov byte [rsp + 0x2f], bpl
mov byte [rsp + 0x2c], bl
mov byte [rsp + 0x2e], r15b
mov ecx, dword [rsp + 0x90]
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x2f], 0
mov byte [rsp + 0x2c], 0
mov byte [rsp + 0x2e], 0
cmp ecx, 1
jne 0x14003c42d
mov ecx, dword [r14]
shl ecx, 2
test ecx, ecx
je 0x14003c268
xor edx, edx
nop dword [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 0x14003c1f0
mov byte [rsp + 0x28], bl
mov byte [rsp + 0x2f], bh
mov ecx, ebx
shr ecx, 0x10
mov byte [rsp + 0x2c], cl
shr ebx, 0x18
mov byte [rsp + 0x2e], bl
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x2f], 0
mov byte [rsp + 0x2c], 0
mov byte [rsp + 0x2e], 0
cmp dword [r14], 2
jb 0x14003c42d
lea rcx, [rsi + 0x1c]
mov edx, 1
lea r8, [0x1400d3d90]
lea r9, [0x1400d4dc0]
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, 0x10
movzx r10d, r10b
movzx r10d, byte [r8 + r10*4 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx ebx, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rbx*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, 0x10
movzx r10d, r10b
movzx r10d, byte [r8 + r10*4 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx ebx, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rbx*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, 0x10
movzx r10d, r10b
movzx r10d, byte [r8 + r10*4 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx ebx, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rbx*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, 0x10
movzx r10d, r10b
movzx r10d, byte [r8 + r10*4 + 0x400]
mov r10d, dword [r9 + r10*4 + 0x400]
xor r10d, dword [r9 + r11*4]
movzx r11d, bl
movzx ebx, byte [r8 + rbp*4 + 0x400]
xor r10d, dword [r9 + rbx*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 0x14003c2a0
test rsi, rsi
je 0x14003c44e
add rsi, 0xf8
test rdi, rdi
je 0x14003c444
movdqu xmm0, xmmword [rdi]
jmp 0x14003c448
pxor xmm0, xmm0
movdqu xmmword [rsi], xmm0
xor eax, eax
add rsp, 0x30
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret