Function at 0x405780
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
test rdx, rdx
mov qword [rsp + 0xb8], rdx
je 0x405b35
test rcx, rcx
je 0x405b67
test r8, r8
je 0x405b4e
mov edx, dword [rcx]
mov ebp, dword [rcx + 4]
lea r9, [r8 + 0xf0]
mov r12d, dword [rcx + 8]
mov r13d, dword [rcx + 0xc]
lea rdi, [0x0043d920]
mov ecx, dword [r8 + 0x1e0]
mov qword [rsp + 0x50], r9
lea rsi, [0x0043ad20]
bswap edx
bswap ebp
xor edx, dword [r8 + 0xf0]
bswap r12d
bswap r13d
xor ebp, dword [r8 + 0xf4]
sar ecx, 1
xor r12d, dword [r8 + 0xf8]
xor r13d, dword [r8 + 0xfc]
lea eax, [rcx - 1]
lea r11, [0x0043b520]
lea r10, [0x0043b120]
mov dword [rsp + 0x5c], eax
add rax, 1
shl rax, 5
add rax, r9
mov qword [rsp + 0x48], rax
jmp 0x4058ac
mov edx, dword [rdi + r12*4]
xor edx, dword [rsi + r13*4]
mov ebx, ebx
mov r12d, dword [rsp + 0x28]
mov r13d, dword [rsp + 0x2c]
mov ecx, dword [rsp + 0x38]
xor edx, r8d
xor edx, dword [r11 + rbp*4]
mov r8d, dword [rsp + 0x30]
xor edx, dword [r10 + r14*4]
mov r14d, dword [rsp + 0x34]
mov ebp, dword [rdi + r12*4]
mov r12d, dword [rdi + rcx*4]
xor r12d, dword [rsi + r15*4]
mov r15d, dword [rsp + 0x3c]
xor r12d, dword [r9 + 8]
xor ebp, dword [rsi + r14*4]
mov r14d, dword [rsp + 0x40]
xor ebp, dword [r9 + 4]
xor ebp, dword [r11 + r13*4]
mov r13d, dword [rsp + 0x44]
xor r12d, dword [r11 + r15*4]
xor ebp, dword [r10 + r8*4]
xor r12d, dword [r10 + r14*4]
mov r13d, dword [rdi + r13*4]
xor r13d, dword [rsi + rax*4]
mov eax, dword [rsp + 0x58]
xor r13d, dword [r9 + 0xc]
xor r13d, dword [r11 + rax*4]
xor r13d, dword [r10 + rbx*4]
mov ebx, edx
movzx r8d, bpl
mov r14d, r13d
shr ebx, 0x18
shr r14d, 0x10
mov eax, r12d
mov r15d, dword [rdi + rbx*4]
xor r15d, dword [rsi + r8*4]
movzx ecx, r14b
xor r15d, dword [r9 + 0x10]
mov r14d, ebp
movzx ebx, ah
xor r15d, dword [r11 + rcx*4]
shr r14d, 0x18
movzx r8d, r12b
mov ecx, edx
xor r15d, dword [r10 + rbx*4]
mov ebx, dword [rdi + r14*4]
shr ecx, 0x10
xor ebx, dword [rsi + r8*4]
mov r14d, r12d
xor ebx, dword [r9 + 0x14]
movzx eax, cl
mov ecx, r13d
xor ebx, dword [r11 + rax*4]
movzx eax, ch
shr r14d, 0x18
xor ebx, dword [r10 + rax*4]
movzx r8d, r13b
mov eax, ebp
mov ecx, dword [rdi + r14*4]
shr eax, 0x10
xor ecx, dword [rsi + r8*4]
xor ecx, dword [r9 + 0x18]
movzx r14d, al
shr r13d, 0x18
xor ecx, dword [r11 + r14*4]
movzx eax, dh
movzx r8d, dl
xor ecx, dword [r10 + rax*4]
mov edx, dword [rdi + r13*4]
shr r12d, 0x10
xor edx, dword [rsi + r8*4]
movzx r12d, r12b
mov eax, ebp
xor edx, dword [r9 + 0x1c]
movzx ebp, ah
mov dword [rsp + 0x24], r15d
xor edx, dword [r11 + r12*4]
mov r12d, r15d
shr r15d, 0x10
xor edx, dword [r10 + rbp*4]
movzx eax, ch
movzx r15d, r15b
mov r14d, eax
mov eax, ebx
mov dword [rsp + 0x2c], r15d
shr eax, 0x18
movzx r15d, cl
add r9, 0x20
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x34], r15d
mov r15d, ebx
movzx eax, dh
shr r15d, 0x10
mov r13d, edx
mov dword [rsp + 0x30], eax
mov eax, ecx
shr r13d, 0x10
shr eax, 0x18
shr r12d, 0x18
mov r8d, dword [r9]
mov dword [rsp + 0x38], eax
movzx eax, r15b
movzx r15d, dl
mov dword [rsp + 0x3c], eax
mov eax, dword [rsp + 0x24]
shr edx, 0x18
shr ecx, 0x10
mov dword [rsp + 0x44], edx
movzx ebp, r13b
movzx ecx, cl
movzx r13d, bl
movzx ebx, bh
movzx eax, ah
mov dword [rsp + 0x58], ecx
mov dword [rsp + 0x40], eax
movzx eax, byte [rsp + 0x24]
cmp r9, qword [rsp + 0x48]
jne 0x405830
lea r11, [0x0043d520]
mov r9d, dword [rsp + 0x5c]
mov edi, dword [rsp + 0x34]
mov rsi, qword [rsp + 0x50]
mov ebx, ebx
movzx edx, byte [r11 + r13*4]
mov r10d, dword [r11 + r14*4]
mov ecx, dword [r11 + r12*4]
mov ebp, dword [r11 + rbp*4]
mov r14d, dword [rsp + 0x30]
add r9, 1
mov r12, qword [rsp + 0xb8]
and r10d, 0xff00
shl r9, 5
movzx r15d, byte [r11 + r15*4]
or r10d, edx
and ebp, 0xff0000
and ecx, 0xff000000
xor r10d, r8d
or ecx, ebp
mov edx, dword [rsp + 0x2c]
xor ecx, r10d
mov r10d, dword [rsp + 0x28]
add rsi, r9
mov r13d, dword [r11 + r14*4]
movzx r9d, byte [r11 + rdi*4]
bswap ecx
mov dword [r12], ecx
mov r14d, dword [rsp + 0x40]
mov ebp, dword [r11 + rdx*4]
movzx eax, byte [r11 + rax*4]
mov r8d, dword [r11 + r10*4]
and r13d, 0xff00
mov edx, dword [r11 + rbx*4]
or r13d, r9d
xor r13d, dword [rsi + 4]
mov r9d, dword [rsp + 0x38]
and ebp, 0xff0000
and r8d, 0xff000000
and edx, 0xff00
or ebp, r8d
mov r8d, dword [rsp + 0x3c]
or eax, edx
xor r13d, ebp
mov r10d, dword [r11 + r9*4]
bswap r13d
mov dword [r12 + 4], r13d
mov r13d, dword [r11 + r14*4]
mov ecx, dword [r11 + r8*4]
and r10d, 0xff000000
and r13d, 0xff00
or r13d, r15d
xor r13d, dword [rsi + 8]
and ecx, 0xff0000
or r10d, ecx
xor r10d, r13d
bswap r10d
mov dword [r12 + 8], r10d
xor eax, dword [rsi + 0xc]
mov esi, dword [rsp + 0x44]
mov ebp, dword [r11 + rsi*4]
mov r14d, dword [rsp + 0x58]
and ebp, 0xff000000
mov r11d, dword [r11 + r14*4]
and r11d, 0xff0000
or ebp, r11d
xor eax, ebp
bswap eax
mov dword [r12 + 0xc], eax
xor eax, eax
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, [0x00439b80]
lea rcx, [0x00439b96]
mov r8d, 0x1d7
call fcn.00409b50
lea rdx, [0x00439b80]
lea rcx, [0x00439bac]
mov r8d, 0x1d9
call fcn.00409b50
lea rdx, [0x00439b80]
lea rcx, [0x00439ba1]
mov r8d, 0x1d8
call fcn.00409b50
nop
nop dword [rax + rax]
nop word cs:[rax + rax]