Function at 0x401910
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, 0x58
mov rax, rdx
mov r8, rcx
mov qword [rsp + 0xa8], rdx
lea rbx, [rcx + 0x10]
add rax, 0x10
cmp rcx, rax
mov qword [rsp + 0x48], rbx
jae 0x401949
cmp rdx, rbx
jb 0x4020ea
mov rbx, qword [rsp + 0xa8]
movdqu xmm0, xmmword [r8]
movdqu xmm2, xmmword [rbx]
pxor xmm0, xmm2
movaps xmmword [rsp], xmm2
movups xmmword [r8], xmm0
movzx r9d, byte [r8 + 3]
movzx edx, byte [r8 + 0xa]
movzx r13d, byte [r8 + 0xd]
movzx esi, byte [r8 + 2]
mov byte [rsp + 0x38], r9b
movzx r9d, byte [r8 + 0xb]
mov byte [rsp], dl
movzx r15d, byte [r8 + 0xe]
movzx edx, byte [r8 + 0xf]
movzx ebp, byte [r8 + 5]
mov byte [rsp + 0x10], sil
mov byte [rsp + 0x35], r9b
mov r9, rax
movzx r10d, byte [r8]
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0x28], r9
movzx ecx, byte [r8 + 4]
mov r9d, edx
mov edx, r13d
movzx edi, byte [r8 + 8]
mov byte [rsp + 0x36], bpl
movzx r11d, byte [r8 + 0xc]
add rax, 0xa0
movzx r14d, byte [r8 + 1]
mov qword [rsp + 0x40], rax
movzx ebx, byte [r8 + 9]
mov eax, r15d
movzx esi, byte [r8 + 6]
movzx r12d, byte [r8 + 7]
movzx r13d, byte [rsp]
movzx r15d, byte [rsp + 0x35]
jmp 0x401ddc
mov edx, r10d
mov eax, esi
xor edx, r11d
xor eax, r12d
mov ebp, eax
mov r14d, edx
xor ebp, edx
shr r14b, 7
add edx, edx
mov r9d, ebp
lea ebp, [r14 + r14]
add ebp, r14d
mov r14d, r9d
lea ebp, [rbp + rbp*8]
xor r14d, r10d
xor r10d, r12d
xor edx, ebp
xor edx, r14d
mov byte [rsp + 0x10], dl
mov byte [r8], dl
mov edx, r11d
xor r11d, r9d
xor edx, esi
xor esi, r9d
xor r9d, r12d
mov r14d, edx
add edx, edx
mov r12d, ebx
shr r14b, 7
lea ebp, [r14 + r14]
add ebp, r14d
lea ebp, [rbp + rbp*8]
xor edx, ebp
mov r14d, edx
xor r14d, r11d
mov r11d, eax
add eax, eax
shr r11b, 7
mov byte [r8 + 1], r14b
lea edx, [r11 + r11]
add edx, r11d
lea edx, [rdx + rdx*8]
xor eax, edx
mov edx, eax
xor edx, esi
mov esi, r10d
add r10d, r10d
shr sil, 7
mov byte [rsp + 0x3a], dl
mov byte [r8 + 2], dl
mov edx, esi
mov esi, ecx
lea eax, [rdx + rdx]
xor esi, ebx
add eax, edx
mov edx, esi
mov esi, edi
lea eax, [rax + rax*8]
xor esi, r13d
xor r10d, eax
mov eax, esi
xor esi, edx
xor r10d, r9d
mov r9d, esi
mov esi, edx
shr sil, 7
mov byte [rsp + 0x3c], r10b
xor r12d, edi
add edx, edx
mov r11d, esi
mov byte [r8 + 3], r10b
mov esi, r9d
xor ebx, r9d
lea r10d, [r11 + r11]
xor esi, ecx
mov ebp, ebx
add r10d, r11d
mov r11d, r12d
xor ecx, r13d
lea r10d, [r10 + r10*8]
shr r11b, 7
xor edi, r9d
xor edx, r10d
mov r10d, esi
xor r13d, r9d
mov esi, edx
mov edx, r12d
lea r12d, [rcx + rcx]
xor esi, r10d
add edx, edx
lea r10d, [r11 + r11]
mov byte [rsp + 0x3d], sil
add r10d, r11d
mov r11d, eax
add eax, eax
mov byte [r8 + 4], sil
lea r10d, [r10 + r10*8]
shr r11b, 7
xor edx, r10d
mov r10d, r11d
movzx r11d, byte [rsp + 0x36]
mov ebx, edx
lea edx, [r10 + r10]
xor ebx, ebp
movzx ebp, byte [rsp + 0x37]
add edx, r10d
mov byte [rsp + 0x3e], bl
lea edx, [rdx + rdx*8]
mov byte [r8 + 5], bl
mov ebx, r15d
xor eax, edx
xor ebx, r11d
xor eax, edi
mov edi, ecx
mov ecx, ebx
shr dil, 7
mov esi, eax
mov byte [r8 + 6], al
mov ebx, ebp
mov edx, edi
lea eax, [rdx + rdx]
add eax, edx
lea eax, [rax + rax*8]
xor r12d, eax
xor r12d, r13d
mov byte [rsp + 0x3f], r12b
mov byte [r8 + 7], r12b
movzx r12d, byte [rsp + 0x38]
mov edi, r12d
xor ebx, edi
mov edi, ecx
mov eax, ebx
mov ebx, r15d
xor edi, eax
mov edx, edi
mov edi, ecx
shr dil, 7
xor ebx, edx
mov r10d, edi
lea r9d, [r10 + r10]
lea edi, [rcx + rcx]
add r9d, r10d
mov ecx, ebx
lea r9d, [r9 + r9*8]
mov r10d, ebp
mov ebx, r11d
xor edi, r9d
xor edi, ecx
xor ebx, r10d
xor r11d, edx
mov r13d, ebx
mov ecx, ebx
mov byte [r8 + 8], dil
lea ebx, [rcx + rcx]
shr r13b, 7
mov ecx, r11d
mov r10d, r13d
mov r11d, ebp
mov r13d, eax
movzx ebp, byte [rsp]
lea r9d, [r10 + r10]
xor r11d, edx
shr r13b, 7
add r9d, r10d
lea r9d, [r9 + r9*8]
xor ebx, r9d
mov r9d, r13d
lea r13d, [rax + rax]
mov eax, r11d
mov r11d, r12d
xor r15d, r11d
xor ebx, ecx
xor edx, r11d
lea ecx, [r9 + r9]
mov r12d, r15d
mov byte [r8 + 9], bl
add ecx, r9d
shr r12b, 7
lea ecx, [rcx + rcx*8]
mov r9d, r12d
movzx r12d, byte [rsp + 0x3b]
xor r13d, ecx
lea ecx, [r9 + r9]
xor r13d, eax
mov eax, r15d
lea r15d, [rax + rax]
add ecx, r9d
mov byte [r8 + 0xa], r13b
lea ecx, [rcx + rcx*8]
xor r15d, ecx
xor r15d, edx
movzx edx, byte [rsp + 0x35]
mov byte [r8 + 0xb], r15b
xor edx, ebp
mov eax, edx
movzx edx, byte [rsp + 0x39]
mov r9d, eax
mov r11d, eax
shr r9b, 7
xor edx, r12d
mov ecx, edx
lea edx, [r9 + r9]
xor r11d, ecx
add edx, r9d
mov r10d, r11d
lea edx, [rdx + rdx*8]
lea r11d, [rax + rax]
xor r11d, edx
mov edx, ebp
movzx ebp, byte [rsp + 0x35]
xor edx, r10d
mov eax, edx
mov edx, r12d
xor r11d, eax
mov r9d, ebp
mov byte [r8 + 0xc], r11b
xor r9d, edx
mov eax, r9d
shr r9b, 7
lea edx, [r9 + r9]
add eax, eax
add edx, r9d
mov r9d, ebp
lea edx, [rdx + rdx*8]
xor r9d, r10d
mov ebp, r9d
xor edx, eax
mov r9d, ecx
xor edx, ebp
shr r9b, 7
movzx ebp, byte [rsp]
add ecx, ecx
lea eax, [r9 + r9]
mov byte [r8 + 0xd], dl
add eax, r9d
mov r9d, r12d
movzx r12d, byte [rsp + 0x39]
lea eax, [rax + rax*8]
xor r9d, r10d
xor eax, ecx
mov ecx, r9d
xor eax, ecx
mov r9d, r12d
mov byte [r8 + 0xe], al
xor ebp, r9d
mov r9d, ebp
mov ecx, ebp
shr r9b, 7
add ecx, ecx
mov ebp, r9d
lea r9d, [rbp + rbp]
add r9d, ebp
lea r9d, [r9 + r9*8]
xor r9d, ecx
mov ecx, r12d
xor r10d, ecx
xor r9d, r10d
mov byte [r8 + 0xf], r9b
mov rcx, qword [rsp + 0x28]
movzx r10d, byte [rsp + 0x10]
movzx ebp, byte [rsp + 0x3a]
movzx r12d, byte [rsp + 0x3e]
xor r10b, byte [rcx]
mov byte [r8], r10b
xor r14b, byte [rcx + 1]
mov byte [r8 + 1], r14b
xor bpl, byte [rcx + 2]
mov byte [r8 + 2], bpl
mov byte [rsp + 0x10], bpl
movzx ebp, byte [rsp + 0x3c]
xor bpl, byte [rcx + 3]
mov byte [r8 + 3], bpl
mov byte [rsp + 0x38], bpl
mov rbp, rcx
movzx ecx, byte [rsp + 0x3d]
xor cl, byte [rbp + 4]
add rbp, 0x10
mov byte [r8 + 4], cl
xor r12b, byte [rbp - 0xb]
mov byte [r8 + 5], r12b
xor sil, byte [rbp - 0xa]
mov byte [rsp + 0x36], r12b
movzx r12d, byte [rsp + 0x3f]
mov byte [r8 + 6], sil
xor r12b, byte [rbp - 9]
mov byte [r8 + 7], r12b
xor dil, byte [rbp - 8]
mov byte [r8 + 8], dil
xor bl, byte [rbp - 7]
mov byte [r8 + 9], bl
xor r13b, byte [rbp - 6]
mov byte [r8 + 0xa], r13b
xor r15b, byte [rbp - 5]
mov byte [r8 + 0xb], r15b
xor r11b, byte [rbp - 4]
mov byte [r8 + 0xc], r11b
xor dl, byte [rbp - 3]
mov byte [r8 + 0xd], dl
xor al, byte [rbp - 2]
mov byte [r8 + 0xe], al
xor r9b, byte [rbp - 1]
mov qword [rsp + 0x28], rbp
mov byte [r8 + 0xf], r9b
lea rbp, [0x00407c40]
movzx edi, dil
movzx r11d, r11b
movzx edi, byte [rbp + rdi]
movzx r10d, r10b
movzx ecx, cl
movzx edx, dl
movzx r10d, byte [rbp + r10]
movzx r14d, r14b
movzx eax, al
movzx ebx, bl
movzx ecx, byte [rbp + rcx]
movzx esi, sil
movzx r13d, r13b
movzx r12d, r12b
movzx r9d, r9b
movzx r15d, r15b
mov byte [rsp + 0x3a], dil
mov rdi, rbp
movzx ebp, byte [rbp + r11]
movzx edx, byte [rdi + rdx]
movzx r11d, byte [rdi + r14]
movzx esi, byte [rdi + rsi]
mov byte [rsp], bpl
movzx ebp, byte [rsp + 0x36]
mov byte [rsp + 0x36], dl
movzx edx, byte [rsp + 0x10]
mov byte [rsp + 0x35], r11b
movzx ebx, byte [rdi + rbx]
movzx r11d, byte [rdi + rbp]
movzx ebp, r10b
movzx r14d, byte [rdi + rdx]
mov rdx, rdi
movzx r12d, byte [rdx + r12]
movzx r15d, byte [rdx + r15]
mov byte [rsp + 0x37], r14b
mov r14d, esi
movzx esi, byte [rdi + r13]
movzx edi, byte [rdi + rax]
mov byte [rsp + 0x3b], r14b
movzx eax, byte [rsp + 0x38]
mov byte [rsp + 0x38], r12b
movzx r12d, byte [rdx + r9]
movzx r9d, r14b
mov byte [rsp + 0x39], r15b
movzx r13d, byte [rdx + rax]
movzx eax, dil
movzx edx, r13b
shl rdx, 8
or rdx, rax
movzx eax, bl
shl rdx, 8
or rdx, rax
movzx eax, cl
shl rdx, 8
or rdx, rax
movzx eax, r12b
shl rdx, 8
or rdx, rax
movzx eax, sil
shl rdx, 8
or rdx, rax
movzx eax, r11b
shl rdx, 8
or rdx, rax
movzx eax, r15b
shl rax, 8
shl rdx, 8
or rax, r9
movzx r9d, byte [rsp + 0x35]
or rdx, rbp
shl rax, 8
or rax, r9
movzx r9d, byte [rsp]
shl rax, 8
or rax, r9
movzx r9d, byte [rsp + 0x38]
shl rax, 8
or rax, r9
movzx r9d, byte [rsp + 0x37]
shl rax, 8
or rax, r9
movzx r9d, byte [rsp + 0x36]
shl rax, 8
or rax, r9
movzx r9d, byte [rsp + 0x3a]
mov qword [rsp + 0x10], rdx
shl rax, 8
mov rdx, qword [rsp + 0x40]
or rax, r9
cmp qword [rsp + 0x28], rdx
mov r15, r9
mov qword [rsp + 0x18], rax
movdqa xmm1, xmmword [rsp + 0x10]
movups xmmword [r8], xmm1
jne 0x401a00
mov rax, qword [rsp + 0xa8]
mov r9, qword [rsp + 0x28]
add rax, 0xb0
cmp r8, rax
mov rax, qword [rsp + 0xa8]
jae 0x401f98
cmp qword [rsp + 0x48], r9
ja 0x401fbe
movdqu xmm0, xmmword [rax + 0xa0]
movdqu xmm4, xmmword [r8]
pxor xmm0, xmm4
movups xmmword [r8], xmm0
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rax + 0xa0]
xor byte [r8], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa1]
xor byte [r8 + 1], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa2]
xor byte [r8 + 2], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa3]
xor byte [r8 + 3], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa4]
xor byte [r8 + 4], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa5]
xor byte [r8 + 5], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa6]
xor byte [r8 + 6], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa7]
xor byte [r8 + 7], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa8]
xor byte [r8 + 8], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xa9]
xor byte [r8 + 9], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xaa]
xor byte [r8 + 0xa], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xab]
xor byte [r8 + 0xb], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xac]
xor byte [r8 + 0xc], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xad]
xor byte [r8 + 0xd], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xae]
xor byte [r8 + 0xe], al
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 0xaf]
xor byte [r8 + 0xf], al
jmp 0x401fad
mov rbx, rdx
movzx edx, byte [rdx]
xor byte [rcx], dl
movzx edx, byte [rbx + 1]
xor byte [rcx + 1], dl
movzx edx, byte [rbx + 2]
xor byte [rcx + 2], dl
movzx edx, byte [rbx + 3]
xor byte [rcx + 3], dl
movzx edx, byte [rbx + 4]
xor byte [rcx + 4], dl
movzx edx, byte [rbx + 5]
xor byte [rcx + 5], dl
movzx edx, byte [rbx + 6]
xor byte [rcx + 6], dl
movzx edx, byte [rbx + 7]
xor byte [rcx + 7], dl
movzx edx, byte [rbx + 8]
xor byte [rcx + 8], dl
movzx edx, byte [rbx + 9]
xor byte [rcx + 9], dl
movzx edx, byte [rbx + 0xa]
xor byte [rcx + 0xa], dl
movzx edx, byte [rbx + 0xb]
xor byte [rcx + 0xb], dl
movzx edx, byte [rbx + 0xc]
xor byte [rcx + 0xc], dl
movzx edx, byte [rbx + 0xd]
xor byte [rcx + 0xd], dl
movzx edx, byte [rbx + 0xe]
xor byte [rcx + 0xe], dl
movzx edx, byte [rbx + 0xf]
xor byte [rcx + 0xf], dl
jmp 0x401966