Function at 0x512cd0
Capabilities:
Encode data using xor

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
mov r11b, byte [rcx + 0x101]
mov al, byte [rcx + 0x102]
mov rbx, rdx
mov dl, byte [rcx + 0x100]
mov rdi, r8
lea ebp, [r9 + r8]
mov esi, edx
mov r12d, ebp
lea r13d, [rsi + 1]
lea r10d, [r11 + rax]
sub r12d, edi
movzx r13d, r13b
cmp r12d, 3
jbe 0x512e07
mov r11b, byte [rcx + r13]
mov r12d, dword [rdi]
add rdi, 4
lea eax, [r11 + r10]
movzx r14d, al
mov r10b, byte [rcx + r14]
mov byte [rcx + r14], r11b
add r11d, r10d
mov byte [rcx + r13], r10b
movzx r11d, r11b
movzx r11d, byte [rcx + r11]
xor r11d, r12d
lea r12d, [rsi + 2]
movzx r12d, r12b
mov r13d, r11d
mov r11b, byte [rcx + r12]
add eax, r11d
add eax, r13d
movzx r14d, al
mov r10b, byte [rcx + r14]
mov byte [rcx + r14], r11b
add r11d, r10d
mov byte [rcx + r12], r10b
movzx r11d, r11b
movzx r12d, byte [rcx + r11]
shl r12d, 8
mov r11d, r12d
lea r12d, [rsi + 3]
add esi, 4
movzx r12d, r12b
xor r11d, r13d
mov r10b, byte [rcx + r12]
mov r13d, r11d
shr r13d, 8
add eax, r10d
add eax, r13d
movzx r14d, al
mov r13b, byte [rcx + r14]
mov byte [rcx + r14], r10b
add r10d, r13d
mov byte [rcx + r12], r13b
movzx r13d, sil
movzx r10d, r10b
movzx r10d, byte [rcx + r10]
shl r10d, 0x10
xor r10d, r11d
mov r12d, r10d
mov r10b, byte [rcx + r13]
mov r11d, r12d
add eax, r10d
shr r11d, 0x10
add r11d, eax
movzx r14d, r11b
mov al, byte [rcx + r14]
mov byte [rcx + r14], r10b
add r10d, eax
mov byte [rcx + r13], al
movzx r10d, r10b
movzx r10d, byte [rcx + r10]
shl r10d, 0x18
xor r10d, r12d
mov eax, r10d
mov dword [rdi - 4], r10d
shr eax, 0x18
jmp 0x512cf9
mov esi, r9d
shr esi, 2
mov edi, esi
lea edx, [rdx + rsi*4]
lea r8, [r8 + rdi*4]
imul edi, esi, 0xfffffffc
lea esi, [rdx + 1]
add r9d, edi
je 0x512ec8
cmp r9d, 2
je 0x512e61
cmp r9d, 3
jne 0x512e97
movsxd rdx, r13d
inc r8
mov al, byte [rcx + rdx]
lea r11d, [r10 + rax]
movzx r10d, r11b
mov r9b, byte [rcx + r10]
mov byte [rcx + r10], al
add eax, r9d
mov byte [rcx + rdx], r9b
mov edx, esi
movzx eax, al
mov al, byte [rcx + rax]
xor al, byte [r8 - 1]
mov byte [r8 - 1], al
inc edx
add eax, r11d
inc r8
movzx r10d, dl
mov r9b, byte [rcx + r10]
lea r11d, [rax + r9]
movzx esi, r11b
mov al, byte [rcx + rsi]
mov byte [rcx + rsi], r9b
add r9d, eax
mov byte [rcx + r10], al
movzx r9d, r9b
mov al, byte [rcx + r9]
xor al, byte [r8 - 1]
mov byte [r8 - 1], al
inc edx
add eax, r11d
movzx r10d, dl
mov r9b, byte [rcx + r10]
lea r11d, [rax + r9]
movzx esi, r11b
mov al, byte [rcx + rsi]
mov byte [rcx + rsi], r9b
add r9d, eax
mov byte [rcx + r10], al
movzx r9d, r9b
mov al, byte [rcx + r9]
xor al, byte [r8]
mov byte [r8], al
mov byte [rcx + 0x102], al
xor r8d, r8d
add eax, r11d
movsxd r9, r8d
inc r8d
mov r11b, byte [rcx + r9]
add eax, r11d
movzx r10d, al
mov sil, byte [rcx + r10]
mov byte [rcx + r10], r11b
mov byte [rcx + r9], sil
cmp r8d, 0x100
jne 0x512ed4
xor r9d, r9d
xor r11d, r11d
lea edi, [rdx + 1]
lea r10d, [rdi + r9]
movzx r10d, r10b
mov r8b, byte [rcx + r10]
add eax, r8d
movzx ebp, al
mov sil, byte [rcx + rbp]
mov byte [rcx + rbp], r8b
add r8d, esi
mov byte [rcx + r10], sil
movzx r8d, r8b
mov r8b, byte [rcx + r8]
xor r8b, byte [rbx + r9]
inc r9
or r11d, r8d
cmp r9, 0xa
jne 0x512f03
add edx, 0xa
test r11b, r11b
mov byte [rcx + 0x101], al
sete al
mov byte [rcx + 0x100], dl
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret