Function at 0x576c7830
Capabilities:
Encrypt data using aes
Inspect section memory permissions
Reference aes constants
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
test rdx, rdx
mov r13, rdx
je 0x576c7bbc
test rcx, rcx
je 0x576c7bee
test r8, r8
je 0x576c7bd5
mov edx, dword [r8 + 0x1e0]
mov ebx, dword [rcx + 8]
lea rdi, [r8 + 0xf0]
mov r10d, dword [rcx]
mov r9d, dword [rcx + 4]
lea r12, [0x5773e980]
mov eax, dword [rcx + 0xc]
mov qword [rsp + 0x20], rdi
mov r11, rdi
sar edx, 1
bswap ebx
xor ebx, dword [r8 + 0xf8]
lea r14d, [rdx - 1]
bswap r10d
bswap r9d
xor r10d, dword [r8 + 0xf0]
xor r9d, dword [r8 + 0xf4]
bswap eax
mov dword [rsp + 0x2c], r14d
add r14, 1
xor eax, dword [r8 + 0xfc]
shl r14, 5
lea rbp, [0x5773bd80]
lea rsi, [0x5773c180]
add r14, rdi
mov r8d, ebx
lea rdi, [0x5773c580]
jmp 0x576c7990
mov r8d, eax
movzx r9d, bl
shr r15d, 0x18
shr r8d, 0x10
mov r10d, dword [r12 + r15*4]
xor r10d, dword [rbp + r9*4]
movzx edx, r8b
mov r8d, dword [rsp + 0x28]
mov r9d, ebx
movzx r15d, cl
xor r10d, dword [r11]
shr r9d, 0x18
xor r10d, dword [rdi + rdx*4]
mov r9d, dword [r12 + r9*4]
movzx edx, ch
xor r9d, dword [rbp + r15*4]
shr r8d, 0x10
xor r10d, dword [rsi + rdx*4]
xor r9d, dword [r11 + 4]
movzx edx, r8b
mov r8d, ecx
xor r9d, dword [rdi + rdx*4]
movzx edx, ah
movzx r15d, al
xor r9d, dword [rsi + rdx*4]
shr r8d, 0x18
mov edx, ebx
shr edx, 0x10
mov r8d, dword [r12 + r8*4]
xor r8d, dword [rbp + r15*4]
xor r8d, dword [r11 + 8]
movzx r15d, dl
shr eax, 0x18
xor r8d, dword [rdi + r15*4]
movzx r15d, byte [rsp + 0x28]
shr ecx, 0x10
mov edx, dword [rsp + 0x28]
mov eax, dword [r12 + rax*4]
movzx ecx, cl
movzx ebx, bh
xor eax, dword [rbp + r15*4]
movzx edx, dh
xor eax, dword [r11 + 0xc]
xor r8d, dword [rsi + rdx*4]
xor eax, dword [rdi + rcx*4]
xor eax, dword [rsi + rbx*4]
mov r15d, r10d
movzx ecx, r9b
mov ebx, eax
shr r15d, 0x18
shr ebx, 0x10
add r11, 0x20
mov edx, dword [r12 + r15*4]
xor edx, dword [rbp + rcx*4]
movzx r15d, bl
xor edx, dword [r11 - 0x10]
mov ecx, r8d
xor edx, dword [rdi + r15*4]
movzx ebx, ch
movzx r15d, r8b
xor edx, dword [rsi + rbx*4]
mov ecx, r10d
shr ecx, 0x10
mov dword [rsp + 0x28], edx
mov edx, r9d
shr edx, 0x18
mov ebx, dword [r12 + rdx*4]
xor ebx, dword [rbp + r15*4]
movzx edx, cl
xor ebx, dword [r11 - 0xc]
movzx ecx, ah
movzx r15d, al
xor ebx, dword [rdi + rdx*4]
mov edx, r8d
shr eax, 0x18
shr edx, 0x18
xor ebx, dword [rsi + rcx*4]
shr r8d, 0x10
mov ecx, dword [r12 + rdx*4]
mov edx, r9d
xor ecx, dword [rbp + r15*4]
shr edx, 0x10
xor ecx, dword [r11 - 8]
mov eax, dword [r12 + rax*4]
movzx r15d, dl
mov edx, r10d
movzx r10d, r10b
xor ecx, dword [rdi + r15*4]
movzx edx, dh
xor eax, dword [rbp + r10*4]
xor eax, dword [r11 - 4]
xor ecx, dword [rsi + rdx*4]
movzx r8d, r8b
mov edx, r9d
xor eax, dword [rdi + r8*4]
mov r15d, dword [rsp + 0x28]
movzx edx, dh
xor eax, dword [rsi + rdx*4]
cmp r11, r14
jne 0x576c78e1
mov r14d, dword [rsp + 0x2c]
lea r12, [0x5773e580]
movzx r11d, bl
mov r9d, eax
movzx esi, ch
mov edx, ebx
movzx ebp, byte [r12 + r11*4]
shr r9d, 0x10
mov r11d, r15d
movzx r8d, r9b
shr r11d, 0x18
mov r10d, dword [r12 + rsi*4]
add r14, 1
mov ebx, dword [r12 + r8*4]
mov r8d, r15d
shl r14, 5
add r14, qword [rsp + 0x20]
shr r8d, 0x10
and r10d, 0xff00
and ebx, 0xff0000
mov edi, dword [r14]
xor edi, ebp
mov ebp, dword [r12 + r11*4]
movzx r11d, r8b
xor r10d, edi
movzx edi, cl
movzx esi, byte [r12 + rdi*4]
mov edi, edx
and ebp, 0xff000000
shr edi, 0x18
or ebx, ebp
mov ebp, dword [r12 + r11*4]
xor r10d, ebx
movzx ebx, ah
bswap r10d
mov r9d, dword [r12 + rbx*4]
mov ebx, r15d
mov dword [r13], r10d
mov r10d, dword [r14 + 4]
and ebp, 0xff0000
movzx r15d, r15b
and r9d, 0xff00
xor r10d, esi
mov esi, dword [r12 + rdi*4]
xor r9d, r10d
movzx r10d, al
and esi, 0xff000000
or ebp, esi
mov esi, edx
movzx edx, dh
xor r9d, ebp
movzx ebp, bh
shr esi, 0x10
bswap r9d
mov r11d, dword [r12 + rbp*4]
movzx ebx, byte [r12 + r15*4]
mov dword [r13 + 4], r9d
movzx r9d, byte [r12 + r10*4]
movzx r10d, sil
mov edi, dword [r14 + 8]
and r11d, 0xff00
xor edi, r9d
mov r9d, dword [r12 + r10*4]
xor r11d, edi
mov edi, ecx
shr edi, 0x18
mov r8d, dword [r12 + rdi*4]
and r9d, 0xff0000
and r8d, 0xff000000
or r9d, r8d
xor r11d, r9d
bswap r11d
mov dword [r13 + 8], r11d
xor ebx, dword [r14 + 0xc]
mov r14d, dword [r12 + rdx*4]
and r14d, 0xff00
xor r14d, ebx
shr ecx, 0x10
shr eax, 0x18
movzx ecx, cl
mov eax, dword [r12 + rax*4]
mov ebp, dword [r12 + rcx*4]
and eax, 0xff000000
and ebp, 0xff0000
or eax, ebp
xor eax, r14d
bswap eax
mov dword [r13 + 0xc], eax
xor eax, eax
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, str.src_ciphers_aes_aes.c
lea rcx, [0x5773abf6]
mov r8d, 0x1d7
call fcn.576cf170
lea rdx, str.src_ciphers_aes_aes.c
lea rcx, str.skey___NULL
mov r8d, 0x1d9
call fcn.576cf170
lea rdx, str.src_ciphers_aes_aes.c
lea rcx, [0x5773ac01]
mov r8d, 0x1d8
call fcn.576cf170
nop
nop dword [rax + rax]
sub rsp, 0x28
test rcx, rcx
je 0x576c7c6d
mov edx, dword [rcx]
mov eax, 3
cmp edx, 0xf
jg 0x576c7c30
add rsp, 0x28
ret
cmp edx, 0x17
jle 0x576c7c60
cmp edx, 0x1f
jle 0x576c7c50
xor eax, eax
mov dword [rcx], 0x20
add rsp, 0x28
ret
mov dword [rcx], 0x18
xor eax, eax
jmp 0x576c7c25
xor eax, eax
mov dword [rcx], 0x10
add rsp, 0x28
ret
lea rdx, str.src_ciphers_aes_aes.c
lea rcx, str.keysize___NULL
mov r8d, 0x2d2
call fcn.576cf170
nop
nop word [rax + rax]