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

Disassembly:
push rbp
lea r9, [rcx + 0xf0]
lea r11, [0x22da13580]
lea r10, [0x22da13980]
mov rbp, rsp
push r15
push r14
push r13
push r12
push rdi
lea rdi, [0x22da13180]
push rsi
push rbx
and rsp, 0xfffffffffffffff0
sub rsp, 0x50
mov eax, dword [rdx]
mov r12d, dword [rdx + 4]
mov qword [rbp + 0x20], r8
mov r13d, dword [rdx + 8]
mov r8d, dword [rdx + 0xc]
mov edx, dword [rcx + 0x1e0]
bswap eax
bswap r12d
xor eax, dword [rcx + 0xf0]
bswap r13d
bswap r8d
xor r12d, dword [rcx + 0xf4]
xor r13d, dword [rcx + 0xf8]
shr edx, 1
xor r8d, dword [rcx + 0xfc]
sub edx, 1
shl rdx, 5
lea rsi, [rcx + rdx + 0x110]
mov qword [rsp + 8], rsi
lea rsi, [0x22da13d80]
jmp 0x22d9f2721
mov eax, dword [rdi + r13*4]
xor eax, dword [rsi + r14*4]
xor eax, r8d
mov r8d, dword [rsp + 0x3c]
xor eax, dword [r11 + r12*4]
mov r13d, dword [rsp + 0x2c]
mov r14d, dword [rsp + 0x18]
xor eax, dword [r10 + r8*4]
mov r8d, dword [rsp + 0x38]
mov r12d, dword [rdi + r8*4]
mov r8d, dword [rsp + 0x28]
xor r12d, dword [rsi + r13*4]
xor r12d, r8d
mov r8d, dword [rsp + 0x34]
xor r12d, dword [r11 + r8*4]
mov r8d, dword [rsp + 0x30]
xor r12d, dword [r10 + r8*4]
mov r8d, dword [rsp + 0x24]
mov r13d, dword [rdi + r8*4]
mov r8d, dword [rsp + 0x20]
xor r13d, dword [rsi + r15*4]
xor r13d, r14d
xor r13d, dword [r11 + r8*4]
mov r8d, dword [rsp + 0x1c]
xor r13d, dword [r10 + r8*4]
mov r8d, dword [rsp + 0x14]
mov r8d, dword [rdi + r8*4]
xor r8d, dword [rsi + rdx*4]
mov edx, ebx
xor r8d, ecx
xor r8d, dword [r11 + rdx*4]
mov edx, dword [rsp + 0x10]
xor r8d, dword [r10 + rdx*4]
mov edx, eax
movzx ecx, r12b
movzx ebx, r13b
movzx r14d, r8b
shr edx, 0x18
add r9, 0x20
mov edx, dword [rdi + rdx*4]
xor edx, dword [rsi + rcx*4]
mov ecx, r8d
shr ecx, 0x10
xor edx, dword [r9 - 0x10]
movzx ecx, cl
xor edx, dword [r11 + rcx*4]
mov ecx, r13d
movzx ecx, ch
xor edx, dword [r10 + rcx*4]
mov ecx, r12d
shr ecx, 0x18
mov r15d, edx
movzx edx, ah
mov ecx, dword [rdi + rcx*4]
xor ecx, dword [rsi + rbx*4]
mov ebx, eax
mov dword [rsp + 0x40], r15d
shr ebx, 0x10
xor ecx, dword [r9 - 0xc]
movzx ebx, bl
xor ecx, dword [r11 + rbx*4]
mov ebx, r8d
shr r8d, 0x18
movzx ebx, bh
xor ecx, dword [r10 + rbx*4]
mov ebx, r13d
shr r13d, 0x10
shr ebx, 0x18
movzx r13d, r13b
mov ebx, dword [rdi + rbx*4]
xor ebx, dword [rsi + r14*4]
mov r14d, r12d
shr r14d, 0x10
xor ebx, dword [r9 - 8]
movzx r14d, r14b
xor ebx, dword [r11 + r14*4]
xor ebx, dword [r10 + rdx*4]
mov edx, r12d
movzx r14d, al
movzx edx, dh
mov eax, dword [rdi + r8*4]
xor eax, dword [rsi + r14*4]
movzx r14d, cl
xor eax, dword [r9 - 4]
xor eax, dword [r11 + r13*4]
xor eax, dword [r10 + rdx*4]
mov edx, r15d
mov r15d, ecx
mov r8d, dword [r9]
shr edx, 0x18
shr r15d, 0x18
mov r12d, eax
mov r13d, edx
movzx edx, bh
mov dword [rsp + 0x38], r15d
movzx r15d, bl
mov dword [rsp + 0x3c], edx
mov edx, dword [rsp + 0x40]
shr r12d, 0x10
mov dword [rsp + 0x2c], r15d
mov r15d, ebx
movzx r12d, r12b
shr edx, 0x10
shr r15d, 0x18
movzx edx, dl
mov dword [rsp + 0x24], r15d
mov r15d, ecx
mov dword [rsp + 0x34], edx
movzx edx, ah
shr r15d, 0x10
mov dword [rsp + 0x30], edx
mov edx, dword [r9 + 4]
movzx r15d, r15b
mov dword [rsp + 0x20], r15d
movzx r15d, al
shr eax, 0x18
mov dword [rsp + 0x28], edx
mov edx, dword [rsp + 0x40]
shr ebx, 0x10
mov dword [rsp + 0x14], eax
movzx eax, ch
movzx ebx, bl
mov ecx, dword [r9 + 0xc]
movzx edx, dh
mov dword [rsp + 0x10], eax
mov dword [rsp + 0x1c], edx
mov edx, dword [r9 + 8]
mov dword [rsp + 0x18], edx
movzx edx, byte [rsp + 0x40]
cmp qword [rsp + 8], r9
jne 0x22d9f2698
mov eax, r8d
mov r8d, edx
mov esi, dword [rsp + 0x28]
mov r11d, dword [rsp + 0x34]
lea rdx, str.RRRR_t_t_t_tjjjj
mov dword [rsp + 0x40], ebx
mov edi, dword [rsp + 0x18]
movzx r9d, byte [rdx + r14*4]
mov r11d, dword [rdx + r11*4]
movzx ebx, byte [rdx + r15*4]
xor r9d, eax
mov eax, dword [rsp + 0x3c]
and r11d, 0xff0000
mov r10d, r9d
mov r9d, dword [rdx + r12*4]
xor ebx, edi
movzx edi, byte [rdx + r8*4]
mov eax, dword [rdx + rax*4]
and r9d, 0xff0000
xor edi, ecx
mov ecx, dword [rsp + 0x10]
and eax, 0xff00
xor r10d, eax
mov eax, dword [rdx + r13*4]
mov ecx, dword [rdx + rcx*4]
and eax, 0xff000000
and ecx, 0xff00
or eax, r9d
mov r9d, dword [rsp + 0x2c]
xor edi, ecx
mov ecx, dword [rsp + 0x14]
xor eax, r10d
mov r10d, dword [rsp + 0x30]
movzx r9d, byte [rdx + r9*4]
mov r8d, dword [rdx + rcx*4]
mov r12d, eax
mov r10d, dword [rdx + r10*4]
mov ecx, dword [rsp + 0x40]
shr r12d, 0x10
xor r9d, esi
and r8d, 0xff000000
movzx r12d, r12b
and r10d, 0xff00
xor r10d, r9d
mov r9d, dword [rsp + 0x38]
mov r9d, dword [rdx + r9*4]
and r9d, 0xff000000
or r9d, r11d
xor r9d, r10d
mov r10d, dword [rsp + 0x1c]
mov r13d, r9d
mov r14d, r9d
mov r10d, dword [rdx + r10*4]
shr r13d, 0x18
shr r14d, 0x10
movzx r14d, r14b
movzx r13d, r13b
and r10d, 0xff00
xor ebx, r10d
mov r10d, dword [rsp + 0x24]
mov r11d, dword [rdx + r10*4]
mov r10d, dword [rsp + 0x20]
mov r10d, dword [rdx + r10*4]
and r11d, 0xff000000
mov edx, dword [rdx + rcx*4]
and r10d, 0xff0000
and edx, 0xff0000
or r10d, r11d
or edx, r8d
mov r8d, eax
xor ebx, r10d
xor edi, edx
shr r8d, 0x18
movzx edx, r9b
mov ecx, ebx
mov r11d, edi
mov esi, edi
mov r10d, ebx
shr ecx, 0x18
shl rdx, 8
movzx r8d, r8b
shr esi, 0x10
mov r15d, ecx
mov ecx, r9d
movzx r9d, al
movzx ecx, ch
movzx eax, ah
movzx esi, sil
shr r11d, 0x18
or rdx, rcx
mov ecx, edi
movzx r11d, r11b
shr r10d, 0x10
shl rdx, 8
movzx r10d, r10b
or rdx, r14
shl rdx, 8
or rdx, r13
shl rdx, 8
or rdx, r9
movzx r9d, bl
movzx ebx, bh
shl rdx, 8
or rdx, rax
movzx eax, dil
movzx edi, ch
movzx ecx, r15b
shl rax, 8
shl rdx, 8
or rax, rdi
or rdx, r12
shl rax, 8
shl rdx, 8
or rax, rsi
or rdx, r8
shl rax, 8
mov qword [rsp + 0x40], rdx
or rax, r11
shl rax, 8
or rax, r9
shl rax, 8
or rax, rbx
shl rax, 8
or rax, r10
shl rax, 8
or rax, rcx
mov qword [rsp + 0x48], rax
mov rax, qword [rbp + 0x20]
movdqu xmm0, xmmword [rsp + 0x40]
movups xmmword [rax], xmm0
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret