Function at 0x140030860
Capabilities:
Encrypt data using aes via x86 extensions

Disassembly:
push rbp
mov r10, rdx
mov rbp, rsp
push r15
push r14
push r13
mov r13, rcx
push r12
push rdi
push rsi
mov rsi, r9
push rbx
mov rbx, r8
sub rsp, 0x40
and rsp, 0xfffffffffffffff0
sub rsp, 0xd0
vmovups xmmword [rsp + 0xd0], xmm6
lea r14, [rsp + 0x70]
vmovups xmmword [rsp + 0xe0], xmm7
mov r8, r14
vmovups xmmword [rsp + 0xf0], xmm8
vmovups xmmword [rsp + 0x100], xmm9
mov r12, qword [rbp + 0x40]
mov rdx, qword [rbp + 0x48]
mov rcx, qword [rbp + 0x50]
mov rdi, qword [rbp + 0x30]
mov r9, qword [rbp + 0x38]
call sym.aegis256_init_1
cmp r12, 0xf
jbe 0x140030d80
vmovdqu xmm5, xmmword [rsp + 0xc0]
vmovdqu xmm0, xmmword [rsp + 0x70]
mov eax, 0x10
vmovdqu xmm4, xmmword [rsp + 0xb0]
vmovdqu xmm3, xmmword [rsp + 0xa0]
vmovdqu xmm2, xmmword [rsp + 0x90]
vmovdqu xmm1, xmmword [rsp + 0x80]
nop dword [rax]
vmovdqu xmm6, xmm5
mov rdx, rax
vaesenc xmm5, xmm4, xmm5
vaesenc xmm4, xmm3, xmm4
vaesenc xmm3, xmm2, xmm3
vaesenc xmm2, xmm1, xmm2
vaesenc xmm1, xmm0, xmm1
vaesenc xmm0, xmm6, xmm0
vpxor xmm0, xmm0, xmmword [r9 + rax - 0x10]
lea rax, [rax + 0x10]
cmp r12, rax
jae 0x140030918
vmovdqu xmmword [rsp + 0xc0], xmm5
vmovdqu xmmword [rsp + 0xb0], xmm4
vmovdqu xmmword [rsp + 0xa0], xmm3
vmovdqu xmmword [rsp + 0x90], xmm2
vmovdqu xmmword [rsp + 0x80], xmm1
vmovdqu xmmword [rsp + 0x70], xmm0
mov rcx, r12
and ecx, 0xf
jne 0x140030b20
mov r8, rbx
and r8d, 0xf
test r13, r13
je 0x140030c0c
cmp rbx, 0xf
jbe 0x140030d87
vmovdqu xmm6, xmmword [rsp + 0xc0]
vmovdqu xmm1, xmmword [rsp + 0x70]
mov eax, 0x10
vmovdqu xmm5, xmmword [rsp + 0xb0]
vmovdqu xmm2, xmmword [rsp + 0x80]
vmovdqu xmm4, xmmword [rsp + 0xa0]
vmovdqu xmm3, xmmword [rsp + 0x90]
nop
vpand xmm0, xmm3, xmm4
vpxor xmm0, xmm0, xmmword [r10 + rax - 0x10]
vpxor xmm7, xmm6, xmm5
mov rcx, rax
vpxor xmm0, xmm0, xmm7
vmovdqu xmm7, xmm6
vaesenc xmm6, xmm5, xmm6
vpxor xmm0, xmm0, xmm2
vaesenc xmm5, xmm4, xmm5
vaesenc xmm4, xmm3, xmm4
vmovdqu xmmword [r13 + rax - 0x10], xmm0
vaesenc xmm3, xmm2, xmm3
add rax, 0x10
vaesenc xmm2, xmm1, xmm2
vaesenc xmm1, xmm7, xmm1
vpxor xmm1, xmm1, xmm0
cmp rbx, rax
jae 0x1400309e0
vmovdqu xmmword [rsp + 0xc0], xmm6
vmovdqu xmmword [rsp + 0xb0], xmm5
vmovdqu xmmword [rsp + 0xa0], xmm4
vmovdqu xmmword [rsp + 0x90], xmm3
vmovdqu xmmword [rsp + 0x80], xmm2
vmovdqu xmmword [rsp + 0x70], xmm1
test r8, r8
jne 0x140030b00
mov qword [rsp + 0x20], r14
lea r15, [rsp + 0x50]
mov r9, rbx
mov r8, r12
mov rdx, rdi
mov rcx, r15
call sym.aegis256_mac_1
cmp rdi, 0x10
je 0x140030cf0
cmp rdi, 0x20
jne 0x140030d98
mov rdx, rsi
mov rcx, r15
call sym.crypto_verify_32
test eax, eax
mov esi, eax
setne al
test r13, r13
je 0x140030ab6
test al, al
jne 0x140030af0
vmovups xmm6, xmmword [rsp + 0xd0]
mov eax, esi
vmovups xmm7, xmmword [rsp + 0xe0]
vmovups xmm8, xmmword [rsp + 0xf0]
vmovups xmm9, xmmword [rsp + 0x100]
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov r8, rbx
xor edx, edx
mov rcx, r13
call sym.memset
jmp 0x140030ab6
add r10, rcx
add rcx, r13
mov r9, r14
mov rdx, r10
call sym.aegis256_declast_1
jmp 0x140030a6c
add rdx, r9
lea r8, [rsp + 0x30]
vpxor xmm0, xmm0, xmm0
vmovdqu xmmword [rsp + 0x30], xmm0
mov r9, r8
mov rax, rdx
cmp ecx, 8
jae 0x140030d58
xor edx, edx
test cl, 4
jne 0x140030d40
test cl, 2
jne 0x140030d20
and ecx, 1
jne 0x140030d10
vmovdqu xmm0, xmmword [rsp + 0xc0]
mov r8, rbx
vmovdqu xmm7, xmmword [rsp + 0xb0]
and r8d, 0xf
vaesenc xmm1, xmm7, xmm0
vmovdqu xmm7, xmmword [rsp + 0xa0]
vmovdqu xmmword [rsp + 0xc0], xmm1
vaesenc xmm1, xmm7, xmmword [rsp + 0xb0]
vmovdqu xmm7, xmmword [rsp + 0x90]
vmovdqu xmmword [rsp + 0xb0], xmm1
vaesenc xmm1, xmm7, xmmword [rsp + 0xa0]
vmovdqu xmm7, xmmword [rsp + 0x80]
vmovdqu xmmword [rsp + 0xa0], xmm1
vaesenc xmm1, xmm7, xmmword [rsp + 0x90]
vmovdqu xmm7, xmmword [rsp + 0x70]
vmovdqu xmmword [rsp + 0x90], xmm1
vaesenc xmm1, xmm7, xmmword [rsp + 0x80]
vaesenc xmm0, xmm0, xmm7
vpxor xmm0, xmm0, xmmword [rsp + 0x30]
vmovdqu xmmword [rsp + 0x80], xmm1
vmovdqu xmmword [rsp + 0x70], xmm0
test r13, r13
jne 0x14003099c
cmp rbx, 0xf
jbe 0x140030cd5
vmovdqu xmm5, xmmword [rsp + 0xc0]
vmovdqu xmm7, xmmword [rsp + 0x70]
mov eax, 0x10
vmovdqu xmm4, xmmword [rsp + 0xb0]
vmovdqu xmm1, xmmword [rsp + 0x80]
vmovdqu xmm3, xmmword [rsp + 0xa0]
vmovdqu xmm2, xmmword [rsp + 0x90]
nop
vmovdqu xmm0, xmm5
vmovdqu xmm9, xmm1
vpxor xmm8, xmm5, xmm4
mov rdx, rax
vaesenc xmm0, xmm0, xmm7
vpand xmm6, xmm2, xmm3
vpxor xmm6, xmm6, xmmword [r10 + rax - 0x10]
add rax, 0x10
vpxor xmm0, xmm0, xmm9
vaesenc xmm5, xmm4, xmm5
vaesenc xmm4, xmm3, xmm4
vpxor xmm0, xmm0, xmm8
vaesenc xmm3, xmm2, xmm3
vaesenc xmm2, xmm1, xmm2
vaesenc xmm1, xmm7, xmm1
vpxor xmm7, xmm0, xmm6
cmp rbx, rax
jae 0x140030c50
vmovdqu xmmword [rsp + 0xc0], xmm5
add r10, rdx
vmovdqu xmmword [rsp + 0xb0], xmm4
vmovdqu xmmword [rsp + 0xa0], xmm3
vmovdqu xmmword [rsp + 0x90], xmm2
vmovdqu xmmword [rsp + 0x80], xmm1
vmovdqu xmmword [rsp + 0x70], xmm7
lea rcx, [rsp + 0x40]
test r8, r8
jne 0x140030b06
jmp 0x140030a6c
mov rdx, rsi
mov rcx, r15
call sym.crypto_verify_16
test eax, eax
mov esi, eax
setne al
jmp 0x140030aad
movzx eax, byte [rax + rdx]
mov byte [r9 + rdx], al
jmp 0x140030b5e
movzx r8d, word [rax + rdx]
mov word [r9 + rdx], r8w
add rdx, 2
and ecx, 1
je 0x140030b5e
jmp 0x140030d10
mov edx, dword [rax]
mov dword [r9], edx
mov edx, 4
test cl, 2
je 0x140030b55
jmp 0x140030d20
mov r15d, ecx
xor eax, eax
and r15d, 0xfffffff8
mov r9d, eax
add eax, 8
mov r11, qword [rdx + r9]
mov qword [r8 + r9], r11
cmp eax, r15d
jb 0x140030d61
lea r9, [r8 + rax]
add rax, rdx
jmp 0x140030b41
xor edx, edx
jmp 0x140030980
test r8, r8
je 0x140030a6c
mov rcx, r13
jmp 0x140030b06
mov eax, 1
mov esi, 0xffffffff
jmp 0x140030aad