Function at 0x1404376d0
Capabilities:
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, 0x98
vmovdqa xmmword [rsp + 0x80], xmm7
vmovdqa xmmword [rsp + 0x70], xmm6
mov ebx, r8d
mov rsi, rcx
mov rax, qword [0x1405b8180]
xor rax, rsp
mov qword [rsp + 0x68], rax
cmp r8d, 0x80
je 0x140437729
cmp ebx, 0x100
je 0x140437729
mov edi, 0xffffffa4
cmp ebx, 0xc0
jne 0x140437ab5
vmovups xmm0, xmmword [rdx]
vmovaps xmmword [rsp + 0x20], xmm0
lea rcx, [rsp + 0x30]
vxorps xmm0, xmm0, xmm0
vmovaps xmmword [rsp + 0x30], xmm0
cmp ebx, 0xc0
jb 0x140437764
mov rax, qword [rdx + 0x10]
mov qword [rsp + 0x30], rax
cmp ebx, 0x100
jne 0x140437764
mov rax, qword [rdx + 0x18]
mov qword [rsp + 0x38], rax
add ebx, 0xffffff80
mov r15d, ebx
shr r15d, 6
lea eax, [r15 + r15]
add al, 0xc
mov byte [rsi], al
mov r8, r15
shl r8, 4
lea r12, str.Qw__n
add r8, r12
lea rdx, [rsp + 0x20]
mov r9, rcx
call fcn.140437af0
inc r15d
xor r14d, r14d
cmp ebx, 0x80
cmovae r15d, r14d
mov rax, r15
shl rax, 4
vmovdqa xmm0, xmmword [rax + r12]
vpxor xmm0, xmm0, xmmword [rsp + 0x30]
vmovd eax, xmm0
movzx ecx, al
lea r9, [0x14046e150]
movzx edx, byte [rcx + r9]
vpshufb xmm1, xmm0, xmmword [0x14046e6d0]
vpmovzxdq ymm1, xmm1
vmovq rcx, xmm1
lea r10, [0x14046e050]
movzx ecx, byte [rcx + r10]
shl ecx, 8
or ecx, edx
mov edx, eax
shr edx, 0x10
movzx edx, dl
lea r11, str.cw
movzx edx, byte [rdx + r11]
shl edx, 0x10
shr rax, 0x18
lea rbx, [0x14046e250]
movzx eax, byte [rax + rbx]
shl eax, 0x18
vpextrd r8d, xmm0, 1
or eax, edx
movzx edx, r8b
vpextrq r13, xmm1, 1
movzx edx, byte [rdx + r9]
movzx r13d, byte [r13 + r10]
shl r13d, 8
or r13d, edx
mov edx, r8d
shr edx, 0x10
movzx edx, dl
movzx ebp, byte [rdx + r11]
shl ebp, 0x10
shr r8, 0x18
movzx edx, byte [r8 + rbx]
shl edx, 0x18
or edx, ebp
vpextrd r8d, xmm0, 2
movzx ebp, r8b
movzx ebp, byte [rbp + r9]
vextracti128 xmm1, ymm1, 1
vmovq rdi, xmm1
movzx edi, byte [rdi + r10]
shl edi, 8
or edi, ebp
mov ebp, r8d
shr ebp, 0x10
movzx ebp, bpl
movzx ebp, byte [rbp + r11]
shl ebp, 0x10
or ebp, edi
shr r8, 0x18
movzx r8d, byte [r8 + rbx]
shl r8d, 0x18
or r8d, ebp
vpextrd edi, xmm0, 3
movzx ebp, dil
movzx r9d, byte [rbp + r9]
vpextrq rbp, xmm1, 1
movzx ebp, byte [rbp + r10]
shl ebp, 8
or ebp, r9d
mov r9d, edi
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [r9 + r11]
shr rdi, 0x18
movzx r10d, byte [rdi + rbx]
lea edi, [rdx + r13]
shl r9d, 0x10
shl r10d, 0x18
or r10d, r9d
lea r9d, [r10 + rbp]
shrd edx, r13d, 0x10
shrd r10d, ebp, 0x10
bswap r8d
xor r10d, r8d
rol r8d, 0x10
lea r11d, [rax + rcx]
bswap r9d
shrd eax, ecx, 0x10
xor edi, r8d
bswap edi
rol edi, 0x10
mov ecx, eax
xor ecx, r9d
xor ecx, edi
mov ebx, edx
bswap ebx
rol ebx, 0x10
mov edi, r10d
rol edi, 0x10
xor edi, ecx
bswap edi
rol edi, 0x10
xor edi, dword [rsp + 0x20]
xor ebx, eax
xor edi, edx
mov dword [rsp + 0x40], edi
mov eax, ecx
rol eax, 0x10
xor r11d, dword [rsp + 0x24]
xor r11d, r10d
xor r11d, ecx
mov dword [rsp + 0x44], r11d
mov edx, ebx
bswap edx
xor edx, dword [rsp + 0x28]
xor edx, eax
xor edx, r9d
mov dword [rsp + 0x48], edx
xor ebx, r8d
bswap ecx
xor ecx, dword [rsp + 0x2c]
xor ebx, ecx
mov dword [rsp + 0x4c], ebx
lea r8d, [r15 + 1]
cmp r15d, 2
cmovae r8d, r14d
lea rdx, [rsp + 0x40]
shl r8, 4
add r8, r12
lea rcx, [rsp + 0x50]
lea r9, [rsp + 0x30]
vzeroupper
call fcn.140437af0
mov eax, 1
vmovdqa xmm0, xmmword [0x14046e6e0]
vmovdqa xmm1, xmmword [0x14046e6f0]
vmovdqa xmm2, xmmword [0x14046e700]
nop dword [rax]
mov ecx, eax
and ecx, 3
shl rcx, 4
vmovdqa xmm3, xmmword [rsp + rcx + 0x20]
vpshufb xmm3, xmm3, xmm0
vpshufd xmm4, xmm3, 0x39
vpslld xmm5, xmm3, 0xd
vpsrld xmm6, xmm4, 0x13
vpor xmm5, xmm5, xmm6
vpshufb xmm5, xmm5, xmm1
vmovdqa xmm6, xmmword [rsp + r14 + 0x20]
vpxor xmm5, xmm5, xmm6
vmovdqu xmmword [rsi + r14 + 4], xmm5
vpshufd xmm5, xmm3, 0x93
vpsrld xmm7, xmm3, 0x1f
vpaddd xmm5, xmm5, xmm5
vpor xmm5, xmm5, xmm7
vpshufb xmm5, xmm5, xmm0
vpxor xmm5, xmm5, xmm6
vmovdqu xmmword [rsi + r14 + 0x44], xmm5
vpslld xmm5, xmm3, 0x1d
vpsrld xmm7, xmm4, 3
vpor xmm5, xmm5, xmm7
vpshufb xmm5, xmm5, xmm2
vpxor xmm5, xmm5, xmm6
vmovdqu xmmword [rsi + r14 + 0x84], xmm5
vpslld xmm3, xmm3, 0x1f
vpsrld xmm4, xmm4, 1
vpor xmm3, xmm3, xmm4
vpshufb xmm3, xmm3, xmm0
vpxor xmm3, xmm6, xmm3
vmovdqu xmmword [rsi + r14 + 0xc4], xmm3
add r14, 0x10
inc rax
cmp rax, 5
jne 0x1404379c0
vmovdqa xmm1, xmmword [rsp + 0x30]
vpshufb xmm1, xmm1, xmm0
vpshufd xmm2, xmm1, 0x39
vpslld xmm1, xmm1, 0x13
vpsrld xmm2, xmm2, 0xd
vpor xmm1, xmm1, xmm2
vpshufb xmm0, xmm1, xmm0
vpxor xmm0, xmm0, xmmword [rsp + 0x20]
vmovdqu xmmword [rsi + 0x104], xmm0
lea rcx, [rsp + 0x20]
mov edx, 0x40
call fcn.14042e7d0
xor edi, edi
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.14043bf40
mov eax, edi
vmovaps xmm6, xmmword [rsp + 0x70]
vmovaps xmm7, xmmword [rsp + 0x80]
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret