Function at 0x4291b0
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, 0x48
lea rax, [rcx + 0xf]
mov qword [rsp + 0x98], rdx
mov r8, rcx
sub rax, rdx
cmp rax, 0x1e
jbe 0x429954
movdqu xmm2, xmmword [rdx]
movdqu xmm0, xmmword [rcx]
mov r9, rdx
pxor xmm0, xmm2
movups xmmword [rsp], xmm2
movups xmmword [rcx], xmm0
mov rcx, rdx
movzx eax, byte [r8 + 2]
movzx r10d, byte [r8]
add rcx, 0x10
add r9, 0xa0
movzx r11d, byte [r8 + 0xc]
movzx r15d, byte [r8 + 0xe]
mov qword [rsp + 0x38], r9
lea r9, [0x004350c0]
movzx esi, byte [r8 + 4]
movzx edi, byte [r8 + 8]
mov byte [rsp + 0x2d], al
movzx eax, byte [r8 + 6]
movzx r14d, byte [r8 + 1]
movzx ebp, byte [r8 + 5]
movzx ebx, byte [r8 + 9]
movzx r13d, byte [r8 + 0xd]
movzx edx, byte [r8 + 0xa]
mov byte [rsp + 0x10], al
movzx eax, byte [r8 + 3]
movzx r12d, byte [r8 + 0xf]
mov byte [rsp + 0x31], al
movzx eax, byte [r8 + 7]
mov byte [rsp + 0x32], al
movzx eax, byte [r8 + 0xb]
mov byte [rsp], al
mov eax, r15d
mov r15d, r11d
movzx r11d, r10b
movzx r10d, byte [rsp]
jmp 0x42964d
mov edx, r11d
mov eax, edi
xor edx, esi
xor eax, r12d
mov ebp, edx
xor ebp, eax
mov r10d, ebp
mov ebp, edx
add edx, edx
shr bpl, 7
mov r14d, ebp
lea ebp, [r14 + r14]
add ebp, r14d
lea ebp, [rbp + rbp*8]
xor edx, ebp
mov ebp, r10d
xor ebp, r11d
xor r11d, r12d
mov r14d, ebp
xor edx, r14d
mov byte [rsp + 0x10], dl
mov byte [r8], dl
mov edx, esi
xor esi, r10d
xor edx, edi
xor edi, r10d
xor r10d, r12d
mov r14d, edx
add edx, edx
shr r14b, 7
lea ebp, [r14 + r14]
add ebp, r14d
lea ebp, [rbp + rbp*8]
xor edx, ebp
movzx ebp, byte [rsp + 0x30]
xor edx, esi
mov esi, eax
add eax, eax
shr sil, 7
mov byte [r8 + 1], dl
mov r14d, edx
lea edx, [rsi + rsi]
add edx, esi
lea edx, [rdx + rdx*8]
xor eax, edx
mov edx, eax
mov eax, r11d
add r11d, r11d
xor edx, edi
shr al, 7
movzx edi, byte [rsp + 0x2e]
mov byte [rsp + 0x34], dl
mov byte [r8 + 2], dl
mov edx, eax
lea eax, [rdx + rdx]
add eax, edx
mov edx, edi
lea eax, [rax + rax*8]
xor edx, ebx
xor r11d, eax
mov eax, r13d
mov r12d, edx
xor eax, r15d
xor r11d, r10d
xor r12d, eax
mov byte [rsp + 0x35], r11b
mov r10d, r12d
mov r12d, edx
mov byte [r8 + 3], r11b
shr r12b, 7
add edx, edx
mov esi, r12d
lea r11d, [rsi + rsi]
add r11d, esi
mov esi, edi
lea r11d, [r11 + r11*8]
xor esi, r10d
xor edx, r11d
mov r11d, ebx
xor ebx, r10d
xor r11d, r13d
mov r12d, edx
xor r13d, r10d
mov edx, r11d
shr r11b, 7
xor r12d, esi
mov esi, r11d
add edx, edx
mov byte [rsp + 0x2e], r12b
lea r11d, [rsi + rsi]
mov byte [r8 + 4], r12b
movzx r12d, byte [rsp + 0x31]
add r11d, esi
movzx esi, byte [rsp + 0x2f]
lea r11d, [r11 + r11*8]
xor edx, r11d
mov r11d, edx
xor r11d, ebx
mov byte [rsp + 0x36], r11b
mov byte [r8 + 5], r11b
mov r11d, eax
add eax, eax
shr r11b, 7
lea edx, [r11 + r11]
add edx, r11d
lea edx, [rdx + rdx*8]
xor eax, edx
xor eax, r13d
mov byte [rsp + 0x37], al
mov byte [r8 + 6], al
mov eax, edi
xor eax, r15d
xor r15d, r10d
mov edi, eax
shr dil, 7
mov r11d, edi
lea edi, [rax + rax]
mov eax, ebp
lea edx, [r11 + r11]
xor eax, r12d
add edx, r11d
lea edx, [rdx + rdx*8]
xor edi, edx
mov edx, esi
xor edi, r15d
movzx r15d, byte [rsp + 0x32]
mov byte [r8 + 7], dil
xor edx, r15d
mov r13d, edx
mov r11d, edx
add edx, edx
shr r13b, 7
xor r11d, eax
mov ebx, r13d
lea r10d, [rbx + rbx]
add r10d, ebx
lea r10d, [r10 + r10*8]
xor edx, r10d
mov r10d, esi
mov r13d, edx
mov edx, r15d
xor r10d, r11d
xor r15d, r11d
xor edx, ebp
xor r13d, r10d
mov ebx, edx
mov byte [rsp + 0x2f], r13b
shr bl, 7
mov byte [r8 + 8], r13b
movzx r13d, byte [rsp]
lea r10d, [rbx + rbx]
add r10d, ebx
lea ebx, [rdx + rdx]
mov edx, r15d
mov r15d, eax
shr r15b, 7
lea r10d, [r10 + r10*8]
add eax, eax
xor ebx, r10d
mov r10d, r15d
xor ebx, edx
lea edx, [r10 + r10]
add edx, r10d
mov byte [rsp + 0x30], bl
lea edx, [rdx + rdx*8]
mov byte [r8 + 9], bl
movzx ebx, byte [rsp + 0x33]
xor edx, eax
mov eax, ebp
xor eax, r11d
xor r11d, r12d
xor edx, eax
mov eax, esi
xor eax, r12d
mov byte [r8 + 0xa], dl
mov r15d, eax
add eax, eax
shr r15b, 7
mov esi, r15d
lea r10d, [rsi + rsi]
add r10d, esi
lea r10d, [r10 + r10*8]
xor r10d, eax
movzx eax, byte [rsp + 0x2c]
xor r10d, r11d
movzx r11d, byte [rsp + 0x2d]
xor eax, r13d
mov byte [r8 + 0xb], r10b
xor r11d, ebx
mov r15d, eax
xor r15d, r11d
mov esi, r15d
mov r15d, eax
shr r15b, 7
mov r12d, r15d
lea r15d, [rax + rax]
mov eax, r13d
lea ebp, [r12 + r12]
xor eax, esi
add ebp, r12d
lea ebp, [rbp + rbp*8]
xor r15d, ebp
xor r15d, eax
movzx eax, byte [rsp + 0x2c]
xor al, byte [rsp + 0x2d]
mov r12d, eax
mov byte [r8 + 0xc], r15b
lea r13d, [rax + rax]
movzx eax, byte [rsp + 0x2c]
shr r12b, 7
lea ebp, [r12 + r12]
add ebp, r12d
lea ebp, [rbp + rbp*8]
xor r13d, ebp
xor eax, esi
add rcx, 0x10
xor r13d, eax
mov eax, r11d
add r11d, r11d
shr al, 7
mov byte [r8 + 0xd], r13b
mov ebp, eax
lea eax, [rbp + rbp]
add eax, ebp
movzx ebp, byte [rsp + 0x2d]
lea eax, [rax + rax*8]
xor ebp, esi
xor eax, r11d
xor esi, ebx
mov r11d, ebp
xor eax, r11d
movzx r11d, byte [rsp]
mov byte [r8 + 0xe], al
xor r11d, ebx
movzx ebx, byte [rsp + 0x37]
mov r12d, r11d
shr r12b, 7
lea ebp, [r12 + r12]
add ebp, r12d
lea r12d, [r11 + r11]
lea ebp, [rbp + rbp*8]
xor r12d, ebp
movzx ebp, byte [rsp + 0x10]
xor r12d, esi
movzx esi, byte [rsp + 0x34]
mov byte [r8 + 0xf], r12b
xor bpl, byte [rcx - 0x10]
movzx r11d, bpl
movzx ebp, byte [rsp + 0x36]
mov byte [r8], r11b
xor r14b, byte [rcx - 0xf]
mov byte [r8 + 1], r14b
xor sil, byte [rcx - 0xe]
mov byte [r8 + 2], sil
mov byte [rsp + 0x2d], sil
movzx esi, byte [rsp + 0x35]
xor sil, byte [rcx - 0xd]
mov byte [r8 + 3], sil
mov byte [rsp + 0x31], sil
movzx esi, byte [rsp + 0x2e]
xor sil, byte [rcx - 0xc]
mov byte [r8 + 4], sil
xor bpl, byte [rcx - 0xb]
mov byte [r8 + 5], bpl
xor bl, byte [rcx - 0xa]
mov byte [r8 + 6], bl
xor dil, byte [rcx - 9]
mov byte [rsp + 0x10], bl
mov byte [rsp + 0x32], dil
mov byte [r8 + 7], dil
movzx edi, byte [rsp + 0x2f]
xor dil, byte [rcx - 8]
movzx ebx, byte [rsp + 0x30]
mov byte [r8 + 8], dil
xor bl, byte [rcx - 7]
mov byte [r8 + 9], bl
xor dl, byte [rcx - 6]
mov byte [r8 + 0xa], dl
xor r10b, byte [rcx - 5]
mov byte [r8 + 0xb], r10b
xor r15b, byte [rcx - 4]
mov byte [r8 + 0xc], r15b
xor r13b, byte [rcx - 3]
mov byte [r8 + 0xd], r13b
xor al, byte [rcx - 2]
mov byte [r8 + 0xe], al
xor r12b, byte [rcx - 1]
mov byte [r8 + 0xf], r12b
movzx esi, sil
movzx edi, dil
movzx ebp, bpl
movzx r14d, r14b
movzx esi, byte [r9 + rsi]
movzx r14d, byte [r9 + r14]
movzx eax, al
movzx edx, dl
movzx r13d, r13b
movzx r15d, r15b
movzx r10d, r10b
movzx ebx, bl
mov byte [rsp + 0x2e], sil
movzx esi, byte [r9 + rdi]
movzx r12d, r12b
movzx edi, byte [rsp + 0x2d]
movzx r15d, byte [r9 + r15]
mov byte [rsp + 0x2c], r14b
movzx r14d, byte [r9 + r13]
movzx ebx, byte [r9 + rbx]
mov byte [rsp + 0x2f], sil
movzx esi, byte [r9 + rbp]
movzx ebp, byte [r9 + rdi]
mov byte [rsp], r15b
movzx edi, byte [rsp + 0x10]
movzx r12d, byte [r9 + r12]
mov byte [rsp + 0x30], bpl
movzx r11d, byte [r9 + r11]
movzx r13d, byte [r9 + rdi]
movzx edi, byte [r9 + rdx]
movzx edx, byte [r9 + r10]
movzx ebp, r11b
mov byte [rsp + 0x2d], r13b
movzx r13d, byte [r9 + rax]
movzx eax, byte [rsp + 0x31]
mov r10d, edx
mov byte [rsp + 0x33], r10b
movzx r15d, byte [r9 + rax]
movzx eax, byte [rsp + 0x32]
movzx eax, byte [r9 + rax]
movzx edx, r15b
shl rdx, 8
mov byte [rsp + 0x31], al
movzx eax, r13b
or rdx, rax
movzx eax, bl
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x2e]
shl rdx, 8
or rdx, rax
movzx eax, r12b
shl rdx, 8
or rdx, rax
movzx eax, dil
shl rdx, 8
or rdx, rax
movzx eax, sil
shl rdx, 8
or rdx, rax
movzx eax, r10b
movzx r10d, byte [rsp + 0x2d]
shl rax, 8
shl rdx, 8
or rax, r10
movzx r10d, byte [rsp + 0x2c]
or rdx, rbp
shl rax, 8
or rax, r10
movzx r10d, byte [rsp]
shl rax, 8
or rax, r10
movzx r10d, byte [rsp + 0x31]
mov qword [rsp + 0x10], rdx
shl rax, 8
mov byte [rsp + 0x32], r14b
or rax, r10
movzx r10d, byte [rsp + 0x30]
shl rax, 8
or rax, r10
movzx r10d, r14b
shl rax, 8
or rax, r10
movzx r10d, byte [rsp + 0x2f]
shl rax, 8
or rax, r10
mov qword [rsp + 0x18], rax
movdqu xmm1, xmmword [rsp + 0x10]
movups xmmword [r8], xmm1
cmp qword [rsp + 0x38], rcx
jne 0x429288
lea rax, [r8 + 0x10]
cmp qword [rsp + 0x38], rax
jae 0x4297f2
mov rax, qword [rsp + 0x98]
add rax, 0xb0
cmp r8, rax
jb 0x429820
mov rax, qword [rsp + 0x98]
movdqu xmm4, xmmword [r8]
movdqu xmm0, xmmword [rax + 0xa0]
pxor xmm0, xmm4
movups xmmword [r8], xmm0
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa0]
xor byte [r8], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa1]
xor byte [r8 + 1], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa2]
xor byte [r8 + 2], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa3]
xor byte [r8 + 3], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa4]
xor byte [r8 + 4], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa5]
xor byte [r8 + 5], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa6]
xor byte [r8 + 6], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa7]
xor byte [r8 + 7], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa8]
xor byte [r8 + 8], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa9]
xor byte [r8 + 9], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xaa]
xor byte [r8 + 0xa], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xab]
xor byte [r8 + 0xb], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xac]
xor byte [r8 + 0xc], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xad]
xor byte [r8 + 0xd], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xae]
xor byte [r8 + 0xe], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xaf]
xor byte [r8 + 0xf], al
jmp 0x42980f
movzx eax, byte [rdx]
xor byte [rcx], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 1]
xor byte [rcx + 1], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 2]
xor byte [rcx + 2], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 3]
xor byte [rcx + 3], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 4]
xor byte [rcx + 4], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 5]
xor byte [rcx + 5], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 6]
xor byte [rcx + 6], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 7]
xor byte [rcx + 7], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 8]
xor byte [rcx + 8], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 9]
xor byte [rcx + 9], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xa]
xor byte [rcx + 0xa], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xb]
xor byte [rcx + 0xb], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xc]
xor byte [rcx + 0xc], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xd]
xor byte [rcx + 0xd], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xe]
xor byte [rcx + 0xe], al
mov rax, qword [rsp + 0x98]
movzx eax, byte [rax + 0xf]
xor byte [rcx + 0xf], al
mov rcx, qword [rsp + 0x98]
mov r9, qword [rsp + 0x98]
jmp 0x4291f5