Function at 0x2c1a61a60
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, 0x1a8
test r8, r8
mov r11, rdx
mov qword [rsp + 0x1f0], rcx
mov qword [rsp + 0x200], r8
lea rdx, [rcx + 0xf0]
je 0x2c1a624fe
movzx eax, byte [rcx + 0xf0]
mov rdi, rcx
mov r10, rdx
mov r15, r11
add rdi, 0x10
mov rsi, r10
movdqa xmm2, xmmword [0x2c1b1b240]
mov qword [rsp + 0xa8], rdx
mov qword [rsp + 0xa0], rdi
mov rdi, rcx
add rdi, 0xe0
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], rdi
mov edx, eax
xor dl, byte [r15]
movzx r9d, byte [r15 + 1]
movzx r12d, byte [r15 + 2]
movzx ebp, byte [r15 + 3]
mov byte [r15], dl
xor r9b, byte [rsi + 1]
mov r10d, edx
movzx r8d, byte [r15 + 4]
movzx ecx, byte [r15 + 5]
movzx edx, byte [r15 + 6]
mov byte [r15 + 1], r9b
xor r12b, byte [rsi + 2]
movzx edi, byte [r15 + 7]
movzx eax, byte [r15 + 8]
movzx ebx, byte [r15 + 9]
mov byte [r15 + 2], r12b
xor bpl, byte [rsi + 3]
movzx r11d, byte [r15 + 0xa]
mov byte [r15 + 3], bpl
xor r8b, byte [rsi + 4]
mov byte [r15 + 4], r8b
xor cl, byte [rsi + 5]
mov byte [r15 + 5], cl
xor dl, byte [rsi + 6]
mov byte [r15 + 6], dl
xor dil, byte [rsi + 7]
mov byte [r15 + 7], dil
xor al, byte [rsi + 8]
mov byte [r15 + 8], al
xor bl, byte [rsi + 9]
mov byte [r15 + 9], bl
xor r11b, byte [rsi + 0xa]
mov byte [r15 + 0xa], r11b
movzx r13d, byte [r15 + 0xb]
xor r13b, byte [rsi + 0xb]
movzx r14d, byte [r15 + 0xc]
mov byte [r15 + 0xb], r13b
xor r14b, byte [rsi + 0xc]
mov byte [r15 + 0xc], r14b
mov byte [rsp + 0x7a], r14b
movzx r14d, byte [r15 + 0xd]
xor r14b, byte [rsi + 0xd]
mov byte [r15 + 0xd], r14b
mov byte [rsp + 0x7b], r14b
movzx r14d, byte [r15 + 0xe]
xor r14b, byte [rsi + 0xe]
mov byte [r15 + 0xe], r14b
mov byte [rsp + 0x7c], r14b
movzx r14d, byte [r15 + 0xf]
xor r14b, byte [rsi + 0xf]
mov rsi, qword [rsp + 0x1f0]
mov byte [r15 + 0xf], r14b
xor r10b, byte [rsi]
mov byte [rsp + 0x7d], r14b
mov byte [r15], r10b
xor r9b, byte [rsi + 1]
mov byte [r15 + 1], r9b
xor r12b, byte [rsi + 2]
mov byte [r15 + 2], r12b
xor bpl, byte [rsi + 3]
mov byte [rsp + 0x60], r12b
mov byte [r15 + 3], bpl
xor r8b, byte [rsi + 4]
mov byte [rsp + 0x7e], bpl
mov byte [r15 + 4], r8b
xor cl, byte [rsi + 5]
movzx ebp, byte [rsp + 0x7a]
mov byte [r15 + 5], cl
xor dl, byte [rsi + 6]
mov byte [r15 + 6], dl
xor dil, byte [rsi + 7]
mov byte [r15 + 7], dil
xor al, byte [rsi + 8]
mov r14d, edi
mov byte [r15 + 8], al
xor bl, byte [rsi + 9]
mov byte [rsp + 0x50], al
mov byte [r15 + 9], bl
xor r11b, byte [rsi + 0xa]
mov byte [r15 + 0xa], r11b
movzx edi, byte [rsi + 0xb]
xor edi, r13d
mov r13, rsi
mov byte [r15 + 0xb], dil
xor bpl, byte [rsi + 0xc]
mov r12d, edi
mov rax, r13
movzx edi, byte [rsp + 0x7b]
mov byte [r15 + 0xc], bpl
xor dil, byte [rsi + 0xd]
movzx esi, byte [rsp + 0x7c]
mov byte [rsp + 0x7c], r14b
mov r14, r15
mov byte [r15 + 0xd], dil
xor sil, byte [r13 + 0xe]
movzx r13d, byte [rsp + 0x7d]
mov byte [r15 + 0xe], sil
xor r13b, byte [rax + 0xf]
mov byte [rsp + 0x80], r13b
mov r13, qword [rsp + 0xa0]
mov r15, r13
movzx r13d, byte [rsp + 0x7e]
jmp 0x2c1a62190
movzx eax, byte [rsp + 0x83]
mov r8d, edi
mov ecx, r11d
xor r11d, r12d
xor al, byte [rsp + 0x85]
xor r8d, r13d
xor ecx, r13d
mov r12d, r8d
mov r8d, r11d
xor r9b, byte [rsp + 0x7c]
mov byte [rsp + 0x8b], cl
xor r8d, r12d
mov byte [rsp + 0x60], r12b
movzx ecx, byte [rsp + 0x7d]
movzx r11d, r11b
mov r10d, r8d
mov r8d, esi
xor esi, ebp
xor cl, byte [rsp + 0x81]
movzx r12d, al
movzx eax, byte [rsp + 0x7d]
mov byte [rsp + 0x88], sil
mov edx, esi
movzx esi, byte [rsp + 0x80]
xor edx, r12d
xor sil, byte [rsp + 0x7b]
xor r8b, byte [rsp + 0x83]
mov byte [rsp + 0x8c], cl
xor eax, ebx
mov ebx, r9d
movzx ecx, byte [rsp + 0x7a]
mov r9d, eax
mov byte [rsp + 0x87], bl
xor cl, byte [rsp + 0x7c]
xor r9d, ebx
movzx ebx, sil
movzx esi, byte [rsp + 0x82]
mov byte [rsp + 0x89], al
xor sil, byte [rsp + 0x84]
movzx r8d, r8b
shl r8, 8
or r8, r12
mov byte [rsp + 0x8d], cl
movzx ecx, byte [rsp + 0x7b]
xor cl, byte [rsp + 0x82]
shl r8, 8
mov ebp, esi
movzx esi, sil
xor ebp, ebx
mov eax, ebp
movzx ebp, byte [rsp + 0x50]
mov byte [rsp + 0x8e], cl
movzx ecx, byte [rsp + 0x80]
xor cl, byte [rsp + 0x84]
xor ebp, edi
mov byte [rsp + 0x8a], bpl
movzx ebp, byte [rsp + 0x7e]
xor bpl, byte [rsp + 0x85]
mov byte [rsp + 0x8f], cl
movzx r12d, bpl
or r8, r12
movzx r12d, byte [rsp + 0x88]
shl r8, 8
or r8, r12
movzx r12d, byte [rsp + 0x8b]
movzx ecx, byte [rsp + 0x60]
shl r8, 8
movzx ebp, byte [rsp + 0x85]
or r8, r12
movzx r12d, byte [rsp + 0x7d]
shl r8, 8
or r8, rcx
movzx ecx, byte [rsp + 0x8a]
shl r8, 8
or r8, rcx
movzx ecx, byte [rsp + 0x8f]
shl r8, 8
xor r12d, r9d
xor ebp, edx
movzx ebp, bpl
shl rcx, 8
or rcx, rsi
movzx esi, byte [rsp + 0x8e]
shl rcx, 8
or rcx, rsi
mov rsi, r8
movzx r8d, byte [rsp + 0x7a]
mov byte [rsp + 0x7a], r12b
movzx r12d, byte [rsp + 0x80]
shl rcx, 8
or rsi, r11
or rcx, rbx
movzx ebx, byte [rsp + 0x8d]
mov qword [rsp + 0x60], rsi
shl rcx, 8
movzx esi, byte [rsp + 0x86]
xor r8d, r9d
xor r12d, eax
or rcx, rbx
movzx ebx, byte [rsp + 0x87]
shl rcx, 8
xor esi, edx
movzx esi, sil
or rcx, rbx
movzx ebx, byte [rsp + 0x8c]
shl rcx, 8
or rcx, rbx
movzx ebx, byte [rsp + 0x89]
shl rcx, 8
mov r11, rcx
movzx ecx, byte [rsp + 0x7f]
or r11, rbx
mov ebx, edi
movzx edi, byte [rsp + 0x7e]
mov qword [rsp + 0x68], r11
movzx r11d, byte [rsp + 0x50]
xor ebx, r10d
xor ecx, r10d
mov byte [rsp + 0x50], r8b
movzx r8d, r12b
movzx ebx, bl
movzx r12d, byte [rsp + 0x7b]
movzx ecx, cl
xor edi, edx
xor dl, byte [rsp + 0x83]
xor r11d, r10d
xor r10d, r13d
movzx r13d, byte [rsp + 0x81]
movzx edi, dil
movzx r10d, r10b
movzx r11d, r11b
xor r12d, eax
movzx edx, dl
movzx r12d, r12b
xor r13d, r9d
xor r9b, byte [rsp + 0x7c]
mov byte [rsp + 0x7d], r13b
movzx r13d, byte [rsp + 0x82]
movzx r9d, r9b
xor r13d, eax
xor al, byte [rsp + 0x84]
shl rdx, 8
or rdx, rbp
movzx r13d, r13b
shl rdx, 8
or rdx, rdi
movzx eax, al
shl rdx, 8
shl rax, 8
or rdx, rsi
or rax, r13
shl rdx, 8
shl rax, 8
or rdx, r10
or rax, r12
shl rdx, 8
shl rax, 8
or rdx, rbx
or rax, r8
movzx r8d, byte [rsp + 0x7d]
shl rdx, 8
shl rax, 8
or rdx, r11
or rax, r9
shl rdx, 8
shl rax, 8
or rdx, rcx
or rax, r8
movzx r8d, byte [rsp + 0x7a]
shl rax, 8
or rax, r8
movzx r8d, byte [rsp + 0x50]
mov qword [rsp + 0x50], rdx
movdqa xmm1, xmmword [rsp + 0x60]
shl rax, 8
psrlw xmm1, 7
pand xmm1, xmm2
movdqa xmm0, xmm1
or rax, r8
paddb xmm0, xmm1
mov qword [rsp + 0x58], rax
paddb xmm0, xmm0
paddb xmm0, xmm0
psubb xmm0, xmm1
paddb xmm0, xmm0
paddb xmm0, xmm0
psubb xmm0, xmm1
movdqa xmm1, xmmword [rsp + 0x60]
paddb xmm1, xmm1
pxor xmm0, xmm1
pxor xmm0, xmmword [rsp + 0x50]
movups xmmword [r14], xmm0
movd r10d, xmm0
xor r10b, byte [r15]
mov byte [r14], r10b
movaps xmmword [rsp + 0x190], xmm0
movzx r9d, byte [rsp + 0x191]
xor r9b, byte [r15 + 1]
mov byte [r14 + 1], r9b
movaps xmmword [rsp + 0x180], xmm0
movzx eax, byte [rsp + 0x182]
xor al, byte [r15 + 2]
mov byte [r14 + 2], al
mov byte [rsp + 0x60], al
movaps xmmword [rsp + 0x170], xmm0
movzx eax, byte [rsp + 0x173]
xor al, byte [r15 + 3]
mov byte [r14 + 3], al
mov r13d, eax
movaps xmmword [rsp + 0x160], xmm0
movzx r8d, byte [rsp + 0x164]
xor r8b, byte [r15 + 4]
add r15, 0x10
mov byte [r14 + 4], r8b
movaps xmmword [rsp + 0x150], xmm0
movzx ecx, byte [rsp + 0x155]
xor cl, byte [r15 - 0xb]
mov byte [r14 + 5], cl
movaps xmmword [rsp + 0x140], xmm0
movzx edx, byte [rsp + 0x146]
xor dl, byte [r15 - 0xa]
mov byte [r14 + 6], dl
movaps xmmword [rsp + 0x130], xmm0
movzx eax, byte [rsp + 0x137]
xor al, byte [r15 - 9]
mov byte [r14 + 7], al
mov byte [rsp + 0x7c], al
movaps xmmword [rsp + 0x120], xmm0
movzx eax, byte [rsp + 0x128]
xor al, byte [r15 - 8]
mov byte [r14 + 8], al
movaps xmmword [rsp + 0x110], xmm0
movzx ebx, byte [rsp + 0x119]
xor bl, byte [r15 - 7]
mov byte [rsp + 0x50], al
mov byte [r14 + 9], bl
movaps xmmword [rsp + 0x100], xmm0
movzx r11d, byte [rsp + 0x10a]
xor r11b, byte [r15 - 6]
mov byte [r14 + 0xa], r11b
movaps xmmword [rsp + 0xf0], xmm0
movzx r12d, byte [rsp + 0xfb]
xor r12b, byte [r15 - 5]
mov byte [r14 + 0xb], r12b
movaps xmmword [rsp + 0xe0], xmm0
movzx esi, byte [rsp + 0xec]
xor sil, byte [r15 - 4]
mov byte [r14 + 0xc], sil
mov ebp, esi
movaps xmmword [rsp + 0xd0], xmm0
movzx edi, byte [rsp + 0xdd]
xor dil, byte [r15 - 3]
mov byte [r14 + 0xd], dil
movaps xmmword [rsp + 0xc0], xmm0
movzx esi, byte [rsp + 0xce]
xor sil, byte [r15 - 2]
mov byte [r14 + 0xe], sil
movaps xmmword [rsp + 0xb0], xmm0
movzx eax, byte [rsp + 0xbf]
xor al, byte [r15 - 1]
mov byte [rsp + 0x80], al
movzx r10d, r10b
movzx ebp, bpl
movzx ebx, bl
lea rax, [0x2c1b1b140]
movzx r8d, r8b
movzx r9d, r9b
movzx eax, byte [rax + r10]
movzx ecx, cl
movzx edi, dil
movzx edx, dl
lea r10, [0x2c1b1b140]
movzx r11d, r11b
movzx esi, sil
movzx r8d, byte [r10 + r8]
movzx r12d, r12b
mov byte [rsp + 0x7f], al
movzx eax, byte [rsp + 0x50]
mov byte [rsp + 0x86], r8b
movzx eax, byte [r10 + rax]
mov byte [rsp + 0x7a], al
mov rax, r10
movzx r10d, byte [r10 + rbp]
movzx r9d, byte [rax + r9]
movzx ebp, byte [rax + rbx]
mov rbx, rax
movzx ecx, byte [rax + rcx]
movzx edi, byte [rax + rdi]
movzx eax, byte [rsp + 0x60]
mov byte [rsp + 0x7b], r9b
mov byte [rsp + 0x7e], bpl
mov byte [rsp + 0x50], cl
movzx ecx, byte [rbx + rdx]
mov byte [rsp + 0x7d], dil
movzx edi, byte [rbx + r11]
movzx r9d, byte [rbx + rax]
movzx eax, r13b
movzx edx, byte [rbx + rax]
movzx eax, byte [rsp + 0x7c]
movzx r11d, byte [rbx + rsi]
mov rsi, rbx
mov byte [rsp + 0x81], r9b
mov byte [rsp + 0x83], dl
shl rdx, 8
movzx r13d, byte [rbx + rax]
movzx eax, r11b
movzx ebx, byte [rbx + r12]
mov byte [rsp + 0x85], r11b
or rdx, rax
movzx eax, bpl
shl rdx, 8
mov byte [rsp + 0x7c], r13b
or rdx, rax
movzx eax, r8b
movzx r13d, byte [rsp + 0x80]
shl rdx, 8
or rdx, rax
shl rdx, 8
movzx r13d, byte [rsi + r13]
mov rsi, rax
movzx eax, r13b
or rdx, rax
movzx eax, dil
shl rdx, 8
or rdx, rax
movzx eax, byte [rsp + 0x50]
shl rdx, 8
movzx r8d, byte [rsp + 0x7f]
mov byte [rsp + 0x82], cl
mov byte [rsp + 0x84], bl
mov byte [rsp + 0x80], r10b
or rdx, rax
mov r12, rax
movzx eax, bl
shl rax, 8
shl rdx, 8
mov r11, r8
or rax, rcx
movzx ecx, byte [rsp + 0x7b]
or rdx, r8
shl rax, 8
mov qword [rsp + 0x60], rdx
or rax, rcx
movzx ecx, r10b
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x7c]
shl rax, 8
or rax, rcx
movzx ecx, r9b
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x7d]
shl rax, 8
or rax, rcx
movzx ecx, byte [rsp + 0x7a]
shl rax, 8
mov r8, rax
or r8, rcx
mov rbx, rcx
mov qword [rsp + 0x68], r8
mov r8, qword [rsp + 0x90]
movdqa xmm3, xmmword [rsp + 0x60]
movups xmmword [r14], xmm3
cmp r15, r8
jne 0x2c1a61ca0
mov rax, qword [rsp + 0x1f0]
mov edx, r11d
movzx ebp, byte [rsp + 0x85]
movzx r10d, byte [rsp + 0x7d]
xor dl, byte [rax + 0xe0]
mov rsi, rax
movzx eax, byte [rsp + 0x50]
mov byte [r14], dl
xor al, byte [rsi + 0xe1]
mov byte [r14 + 1], al
movzx eax, byte [rsi + 0xe2]
xor eax, edi
mov byte [r14 + 2], al
movzx eax, byte [rsi + 0xe3]
xor eax, r13d
mov byte [r14 + 3], al
movzx eax, byte [rsp + 0x86]
xor al, byte [rsi + 0xe4]
mov byte [r14 + 4], al
movzx eax, byte [rsp + 0x7e]
xor al, byte [rsi + 0xe5]
mov byte [r14 + 5], al
movzx eax, byte [rsi + 0xe6]
xor eax, ebp
mov byte [r14 + 6], al
movzx eax, byte [rsp + 0x83]
xor al, byte [rsi + 0xe7]
mov byte [r14 + 7], al
movzx eax, byte [rsp + 0x7a]
xor al, byte [rsi + 0xe8]
mov byte [r14 + 8], al
movzx eax, byte [rsi + 0xe9]
xor eax, r10d
mov byte [r14 + 9], al
movzx eax, byte [rsp + 0x81]
xor al, byte [rsi + 0xea]
mov byte [r14 + 0xa], al
movzx eax, byte [rsp + 0x7c]
xor al, byte [rsi + 0xeb]
add qword [rsp + 0x98], 0x10
mov rdi, qword [rsp + 0x98]
mov byte [r14 + 0xb], al
movzx eax, byte [rsp + 0x80]
xor al, byte [rsi + 0xec]
mov byte [r14 + 0xc], al
movzx eax, byte [rsp + 0x7b]
xor al, byte [rsi + 0xed]
mov byte [r14 + 0xd], al
movzx eax, byte [rsp + 0x82]
xor al, byte [rsi + 0xee]
mov byte [r14 + 0xe], al
movzx eax, byte [rsp + 0x84]
xor al, byte [rsi + 0xef]
mov rsi, r14
cmp rdi, qword [rsp + 0x200]
mov byte [r14 + 0xf], al
lea rax, [r14 + 0x10]
jae 0x2c1a6249c
mov r15, rax
jmp 0x2c1a61ae5
mov rdx, qword [rsp + 0xa8]
mov r11, r14
mov rcx, qword [sub.msvcrt.dll_memcpy]
mov r9d, 0x10
mov r8, r11
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call fcn.2c1a61640
nop
add rsp, 0x1a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r11, rdx
jmp 0x2c1a624a7