Function at 0x2c1a62510
Capabilities:
Encode data using xor
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, 0xb8
test r8, r8
mov qword [rsp + 0x100], rcx
mov rax, rdx
mov qword [rsp + 0x110], r8
je 0x2c1a62cc6
lea rdi, [rsp + 0xa0]
mov qword [rsp + 0x80], rdi
lea r15, [rdx + 0x10]
mov rdi, rcx
mov rdx, 0xfffffffffffffff0
add rdi, 0xd0
sub rdx, rax
mov qword [rsp + 0x88], rdi
mov rdi, rcx
add rdi, 0xf0
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0x90], rdi
mov rdx, qword [rsp + 0x80]
lea rax, [r15 - 0x10]
mov r9d, 0x10
mov qword [rsp + 0x40], 0
mov rcx, qword [sub.msvcrt.dll_memcpy]
mov r8, rax
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x78], rax
call fcn.2c1a61640
mov rax, qword [rsp + 0x100]
movzx r13d, byte [r15 - 0x10]
movzx edi, byte [r15 - 0xf]
mov rsi, qword [rsp + 0x100]
xor r13b, byte [rax + 0xe0]
movzx ecx, byte [r15 - 0xe]
movzx ebp, byte [r15 - 0xc]
movzx r10d, byte [r15 - 0xb]
mov byte [r15 - 0x10], r13b
xor dil, byte [rax + 0xe1]
movzx r11d, byte [r15 - 8]
mov byte [r15 - 0xf], dil
xor cl, byte [rax + 0xe2]
movzx eax, byte [r15 - 0xd]
mov byte [r15 - 0xe], cl
xor al, byte [rsi + 0xe3]
movzx r9d, al
movzx eax, byte [r15 - 0xa]
mov byte [r15 - 0xd], r9b
xor bpl, byte [rsi + 0xe4]
mov byte [r15 - 0xc], bpl
xor r10b, byte [rsi + 0xe5]
mov byte [r15 - 0xb], r10b
xor al, byte [rsi + 0xe6]
mov byte [r15 - 0xa], al
mov byte [rsp + 0x50], al
movzx eax, byte [r15 - 9]
xor al, byte [rsi + 0xe7]
mov byte [r15 - 9], al
xor r11b, byte [rsi + 0xe8]
mov byte [rsp + 0x73], al
movzx eax, byte [r15 - 7]
mov byte [r15 - 8], r11b
xor al, byte [rsi + 0xe9]
mov rbx, qword [rsp + 0x100]
movzx esi, byte [r15 - 6]
movzx edx, byte [r15 - 5]
mov byte [r15 - 7], al
mov r12, qword [rsp + 0x100]
xor sil, byte [rbx + 0xea]
mov r8, rbx
mov r14, qword [rsp + 0x100]
mov byte [r15 - 6], sil
movzx ebx, byte [rbx + 0xeb]
xor ebx, edx
movzx edx, byte [r15 - 4]
mov byte [r15 - 5], bl
xor dl, byte [r8 + 0xec]
movzx r8d, byte [r15 - 3]
mov byte [r15 - 4], dl
xor r8b, byte [r12 + 0xed]
mov byte [rsp + 0x72], dl
mov rdx, qword [rsp + 0x100]
movzx r12d, r8b
movzx r8d, byte [r15 - 2]
mov byte [r15 - 3], r12b
xor r8b, byte [r14 + 0xee]
movzx r14d, byte [r15 - 1]
mov byte [r15 - 2], r8b
xor r14b, byte [rdx + 0xef]
mov rdx, qword [rsp + 0x88]
mov byte [rsp + 0x75], r14b
movzx r14d, byte [rsp + 0x73]
mov qword [rsp + 0x68], rdx
movzx edx, byte [rsp + 0x72]
mov byte [rsp + 0x73], al
nop
lea rax, [0x2c1b1b040]
movzx ecx, cl
movzx r13d, r13b
movzx edx, byte [rax + rdx]
movzx ebp, bpl
movzx r11d, r11b
movzx edi, dil
movzx r10d, r10b
movzx r13d, byte [rax + r13]
movzx esi, sil
movzx ebx, bl
movzx ebp, byte [rax + rbp]
movzx r8d, r8b
movzx r11d, byte [rax + r11]
mov byte [rsp + 0x72], dl
movzx edx, byte [rax + r12]
mov r12, rax
movzx ecx, byte [r12 + rcx]
movzx edi, byte [rax + rdi]
movzx r10d, byte [rax + r10]
movzx eax, byte [rsp + 0x73]
mov byte [rsp + 0x60], cl
movzx ecx, byte [rsp + 0x50]
movzx eax, byte [r12 + rax]
movzx ecx, byte [r12 + rcx]
mov byte [rsp + 0x73], al
movzx eax, byte [r12 + rsi]
mov byte [rsp + 0x74], cl
movzx ecx, r14b
movzx esi, byte [r12 + r8]
mov r14, r12
mov r8, r12
movzx r12d, byte [r12 + rcx]
movzx ecx, byte [rsp + 0x75]
movzx ebx, byte [r8 + rbx]
mov byte [rsp + 0x76], al
movzx r14d, byte [r14 + r9]
movzx r9d, byte [rsp + 0x74]
movzx r8d, byte [r8 + rcx]
movzx ecx, sil
mov byte [rsp + 0x75], r8b
movzx r8d, bl
shl r8, 8
or r8, rcx
movzx ecx, dil
shl r8, 8
or r8, rcx
movzx ecx, bpl
shl r8, 8
or r8, rcx
movzx ecx, r12b
shl r8, 8
or r8, rcx
movzx ecx, al
shl r8, 8
or r8, rcx
movzx ecx, dl
shl r8, 8
or r8, rcx
movzx ecx, r13b
mov rax, rcx
movzx ecx, r14b
shl r8, 8
shl rcx, 8
or rax, r8
or rcx, r9
movzx r9d, byte [rsp + 0x73]
mov qword [rsp + 0x50], rax
shl rcx, 8
or rcx, r9
movzx r9d, byte [rsp + 0x72]
shl rcx, 8
or rcx, r9
movzx r9d, byte [rsp + 0x75]
shl rcx, 8
or rcx, r9
movzx r9d, byte [rsp + 0x60]
shl rcx, 8
or rcx, r9
movzx r9d, r10b
shl rcx, 8
or rcx, r9
movzx r9d, r11b
shl rcx, 8
mov rax, rcx
or rax, r9
mov qword [rsp + 0x58], rax
mov r9, qword [rsp + 0x68]
movdqa xmm0, xmmword [rsp + 0x50]
movzx eax, byte [rsp + 0x76]
movups xmmword [r15 - 0x10], xmm0
movzx r8d, byte [rsp + 0x60]
xor r13b, byte [r9]
movzx ecx, byte [rsp + 0x75]
mov byte [r15 - 0x10], r13b
xor dl, byte [r9 + 1]
mov byte [r15 - 0xf], dl
xor al, byte [r9 + 2]
mov byte [rsp + 0x77], dl
movzx edx, byte [rsp + 0x72]
mov byte [r15 - 0xe], al
xor r12b, byte [r9 + 3]
mov byte [r15 - 0xd], r12b
xor bpl, byte [r9 + 4]
mov byte [r15 - 0xc], bpl
xor dil, byte [r9 + 5]
mov byte [r15 - 0xb], dil
xor sil, byte [r9 + 6]
mov byte [r15 - 0xa], sil
xor bl, byte [r9 + 7]
mov byte [r15 - 9], bl
xor r11b, byte [r9 + 8]
mov byte [r15 - 8], r11b
xor r10b, byte [r9 + 9]
mov byte [r15 - 7], r10b
xor r8b, byte [r9 + 0xa]
mov byte [r15 - 6], r8b
xor cl, byte [r9 + 0xb]
mov byte [r15 - 5], cl
xor dl, byte [r9 + 0xc]
mov byte [r15 - 4], dl
mov byte [rsp + 0x72], dl
movzx edx, byte [rsp + 0x73]
xor dl, byte [r9 + 0xd]
mov byte [r15 - 3], dl
mov byte [rsp + 0x73], dl
movzx edx, byte [rsp + 0x74]
xor dl, byte [r9 + 0xe]
mov byte [r15 - 2], dl
xor r14b, byte [r9 + 0xf]
cmp qword [rsp + 0x100], r9
mov byte [rsp + 0x50], dl
mov byte [r15 - 1], r14b
je 0x2c1a62b76
mov r14, qword [rsp + 0x78]
mov qword [rsp + 0x60], r15
movzx eax, byte [r14]
movzx r15d, byte [r14 + 1]
movzx r10d, byte [r14 + 2]
lea ecx, [rax + rax]
mov edx, eax
mov byte [rsp + 0x72], al
sar dl, 7
mov r9d, r15d
and edx, 0x1b
sar r9b, 7
mov r8d, r10d
mov byte [rsp + 0x50], r10b
xor edx, ecx
and r9d, 0x1b
sar r8b, 7
mov r13d, edx
mov ebx, edx
mov eax, edx
lea edx, [rbx + rbx]
sar r13b, 7
and r8d, 0x1b
mov byte [rsp + 0x73], al
and r13d, 0x1b
xor r13d, edx
lea edx, [r13 + r13]
mov edi, r13d
sar dil, 7
and edi, 0x1b
xor edi, edx
lea edx, [r15 + r15]
xor r9d, edx
lea edx, [r9 + r9]
mov ebp, r9d
sar bpl, 7
and ebp, 0x1b
xor ebp, edx
lea edx, [rbp + rbp]
mov esi, ebp
sar sil, 7
and esi, 0x1b
xor esi, edx
lea edx, [r10 + r10]
xor r8d, edx
lea edx, [r8 + r8]
mov r12d, r8d
sar r12b, 7
and r12d, 0x1b
xor r12d, edx
lea edx, [r12 + r12]
mov ecx, r12d
sar cl, 7
mov ebx, ecx
movzx ecx, byte [r14 + 3]
and ebx, 0x1b
xor ebx, edx
movzx edx, byte [r14 + 3]
sar cl, 7
and ecx, 0x1b
add edx, edx
xor ecx, edx
lea edx, [rcx + rcx]
mov r11d, ecx
sar r11b, 7
and r11d, 0x1b
xor eax, r13d
xor r11d, edx
xor eax, edi
lea edx, [r11 + r11]
mov r10d, r11d
sar r10b, 7
and r10d, 0x1b
xor r10d, edx
movzx edx, byte [rsp + 0x50]
xor edx, r15d
xor dl, byte [r14 + 3]
xor edx, r9d
xor r9d, ebp
xor edx, r12d
xor r9d, esi
xor edx, esi
xor edx, ebx
xor edx, r10d
xor edx, eax
movzx eax, byte [rsp + 0x72]
mov byte [r14], dl
movzx edx, byte [rsp + 0x50]
xor edx, eax
xor dl, byte [r14 + 3]
xor edx, r8d
xor edx, r11d
xor edx, edi
xor edx, ebx
xor edx, r10d
xor edx, r9d
movzx r9d, byte [r14 + 3]
mov byte [r14 + 1], dl
mov edx, eax
movzx eax, byte [rsp + 0x50]
xor edx, r15d
xor r9d, edx
xor r9d, ecx
xor r9d, r13d
xor r9d, edi
xor r9d, esi
xor r9d, r10d
xor r8d, r12d
xor eax, edx
xor al, byte [rsp + 0x73]
xor ecx, r11d
xor r8d, ebx
xor ecx, r10d
xor r9d, r8d
add r14, 4
mov byte [r14 - 2], r9b
xor eax, ebp
xor eax, edi
xor eax, esi
xor eax, ebx
xor ecx, eax
mov byte [r14 - 1], cl
cmp qword [rsp + 0x60], r14
jne 0x2c1a6297b
mov r15, qword [rsp + 0x60]
sub qword [rsp + 0x68], 0x10
movzx eax, byte [r15 - 7]
movzx r12d, byte [r15 - 3]
movzx r10d, byte [r15 - 0xb]
movzx edi, byte [r15 - 0xf]
mov byte [rsp + 0x73], al
movzx eax, byte [r15 - 0xa]
movzx ecx, byte [r15 - 0xe]
movzx esi, byte [r15 - 6]
movzx r8d, byte [r15 - 2]
mov byte [rsp + 0x50], al
movzx eax, byte [r15 - 1]
movzx r9d, byte [r15 - 0xd]
movzx r14d, byte [r15 - 9]
movzx ebx, byte [r15 - 5]
movzx r13d, byte [r15 - 0x10]
mov byte [rsp + 0x75], al
movzx ebp, byte [r15 - 0xc]
movzx r11d, byte [r15 - 8]
movzx edx, byte [r15 - 4]
jmp 0x2c1a62740
mov r9d, r13d
mov r13d, eax
mov byte [rsp + 0x60], r14b
add r15, 0x10
mov rax, qword [rsp + 0x100]
movzx r14d, byte [rsp + 0x77]
movzx edx, byte [rsp + 0x72]
xor r9b, byte [rax + 0xf0]
mov byte [r15 - 0x20], r9b
xor r14b, byte [rax + 0xf1]
mov r9d, 0x10
mov byte [r15 - 0x1f], r14b
xor r13b, byte [rax + 0xf2]
mov byte [r15 - 0x1e], r13b
xor r12b, byte [rax + 0xf3]
mov byte [r15 - 0x1d], r12b
xor bpl, byte [rax + 0xf4]
mov byte [r15 - 0x1c], bpl
xor dil, byte [rax + 0xf5]
mov byte [r15 - 0x1b], dil
xor sil, byte [rax + 0xf6]
movzx edi, byte [rsp + 0x73]
mov byte [r15 - 0x1a], sil
xor bl, byte [rax + 0xf7]
mov byte [r15 - 0x19], bl
xor r11b, byte [rax + 0xf8]
mov byte [r15 - 0x18], r11b
xor r10b, byte [rax + 0xf9]
mov byte [r15 - 0x17], r10b
xor r8b, byte [rax + 0xfa]
mov byte [r15 - 0x16], r8b
xor cl, byte [rax + 0xfb]
mov byte [r15 - 0x15], cl
xor dl, byte [rax + 0xfc]
mov byte [r15 - 0x14], dl
xor dil, byte [rax + 0xfd]
mov byte [r15 - 0x13], dil
mov rax, qword [rsp + 0x100]
movzx r10d, byte [rsp + 0x50]
movzx r11d, byte [rsp + 0x60]
mov r8, qword [rsp + 0x80]
xor r10b, byte [rax + 0xfe]
mov rdx, qword [rsp + 0x90]
mov rcx, qword [sub.msvcrt.dll_memcpy]
mov byte [r15 - 0x12], r10b
xor r11b, byte [rax + 0xff]
mov byte [r15 - 0x11], r11b
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
mov rax, qword [rsp + 0x98]
add rax, r15
cmp rax, qword [rsp + 0x110]
jb 0x2c1a62589
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret