Function at 0x52115650
Capabilities:
Encode data using xor

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x40
test rcx, rcx
je 0x52115b7c
test rdx, rdx
je 0x52115b95
xor eax, eax
test r8, r8
lea rdi, [r8 - 1]
je 0x52115b58
mov rsi, rcx
neg rsi
and esi, 0xf
cmp rsi, r8
cmova rsi, r8
cmp r8, 0x12
ja 0x52115b63
mov rsi, r8
lea rbp, [rdx + rsi]
mov rbx, rdx
lea r9, [rdx + 1]
not rbx
movzx eax, byte [rdx]
lea r10, [rcx + 1]
add rbx, rbp
xor al, byte [rcx]
lea r11, [rdi - 1]
and ebx, 7
cmp r9, rbp
je 0x52115805
test rbx, rbx
je 0x52115799
cmp rbx, 1
je 0x5211577e
cmp rbx, 2
je 0x52115767
cmp rbx, 3
je 0x52115751
cmp rbx, 4
je 0x5211573a
cmp rbx, 5
je 0x52115724
cmp rbx, 6
je 0x5211570d
movzx r9d, byte [r9]
lea r11, [rdi - 2]
xor r9b, byte [r10]
lea r10, [rcx + 2]
or eax, r9d
lea r9, [rdx + 2]
movzx r12d, byte [r9]
add r10, 1
add r9, 1
xor r12b, byte [r10 - 1]
sub r11, 1
or eax, r12d
movzx ebx, byte [r9]
add r10, 1
add r9, 1
xor bl, byte [r10 - 1]
sub r11, 1
or eax, ebx
movzx r12d, byte [r9]
add r10, 1
add r9, 1
xor r12b, byte [r10 - 1]
sub r11, 1
or eax, r12d
movzx ebx, byte [r9]
add r10, 1
add r9, 1
xor bl, byte [r10 - 1]
sub r11, 1
or eax, ebx
movzx r12d, byte [r9]
add r10, 1
add r9, 1
xor r12b, byte [r10 - 1]
sub r11, 1
or eax, r12d
movzx ebx, byte [r9]
add r9, 1
add r10, 1
xor bl, byte [r10 - 1]
sub r11, 1
or eax, ebx
cmp r9, rbp
je 0x52115805
movzx r12d, byte [r9]
movzx ebx, byte [r9 + 1]
add r9, 8
xor r12b, byte [r10]
xor bl, byte [r10 + 1]
sub r11, 8
add r10, 8
or eax, r12d
movzx r12d, byte [r9 - 6]
xor r12b, byte [r10 - 6]
or eax, ebx
movzx ebx, byte [r9 - 5]
xor bl, byte [r10 - 5]
or eax, r12d
movzx r12d, byte [r9 - 4]
xor r12b, byte [r10 - 4]
or eax, ebx
movzx ebx, byte [r9 - 3]
xor bl, byte [r10 - 3]
or eax, r12d
movzx r12d, byte [r9 - 2]
xor r12b, byte [r10 - 2]
or eax, ebx
or r12d, eax
movzx eax, byte [r9 - 1]
xor al, byte [r10 - 1]
or eax, r12d
cmp r9, rbp
jne 0x52115799
cmp r8, rsi
je 0x52115b39
sub r8, rsi
sub rdi, rsi
lea rbx, [r8 - 0x10]
shr rbx, 4
add rbx, 1
mov rbp, rbx
shl rbp, 4
cmp rdi, 0xe
jbe 0x52115a22
add rcx, rsi
add rsi, rdx
lea rdx, [rbx - 1]
movdqu xmm0, xmmword [rsi]
mov r12d, 1
and edx, 7
cmp rbx, 1
mov edi, 0x10
movdqa xmm1, xmmword [rcx]
pxor xmm1, xmm0
jbe 0x521159d0
test rdx, rdx
je 0x5211593a
cmp rdx, 1
je 0x5211591b
cmp rdx, 2
je 0x52115905
cmp rdx, 3
je 0x521158ef
cmp rdx, 4
je 0x521158d9
cmp rdx, 5
je 0x521158c3
cmp rdx, 6
je 0x521158ad
movdqu xmm2, xmmword [rsi + 0x10]
mov r12d, 2
mov edi, 0x20
pxor xmm2, xmmword [rcx + 0x10]
por xmm1, xmm2
movdqu xmm3, xmmword [rsi + rdi]
add r12, 1
pxor xmm3, xmmword [rcx + rdi]
add rdi, 0x10
por xmm1, xmm3
movdqu xmm4, xmmword [rsi + rdi]
add r12, 1
pxor xmm4, xmmword [rcx + rdi]
add rdi, 0x10
por xmm1, xmm4
movdqu xmm5, xmmword [rsi + rdi]
add r12, 1
pxor xmm5, xmmword [rcx + rdi]
add rdi, 0x10
por xmm1, xmm5
movdqu xmm0, xmmword [rsi + rdi]
add r12, 1
pxor xmm0, xmmword [rcx + rdi]
add rdi, 0x10
por xmm1, xmm0
movdqu xmm2, xmmword [rsi + rdi]
add r12, 1
pxor xmm2, xmmword [rcx + rdi]
add rdi, 0x10
por xmm1, xmm2
movdqu xmm3, xmmword [rsi + rdi]
add r12, 1
pxor xmm3, xmmword [rcx + rdi]
add rdi, 0x10
cmp rbx, r12
por xmm1, xmm3
jbe 0x521159d0
movdqu xmm4, xmmword [rsi + rdi]
add r12, 8
pxor xmm4, xmmword [rcx + rdi]
movdqu xmm5, xmmword [rsi + rdi + 0x10]
pxor xmm5, xmmword [rcx + rdi + 0x10]
movdqu xmm0, xmmword [rsi + rdi + 0x20]
por xmm1, xmm4
pxor xmm0, xmmword [rcx + rdi + 0x20]
movdqu xmm2, xmmword [rsi + rdi + 0x30]
por xmm1, xmm5
pxor xmm2, xmmword [rcx + rdi + 0x30]
movdqu xmm3, xmmword [rsi + rdi + 0x40]
por xmm1, xmm0
pxor xmm3, xmmword [rcx + rdi + 0x40]
movdqu xmm4, xmmword [rsi + rdi + 0x50]
por xmm1, xmm2
pxor xmm4, xmmword [rcx + rdi + 0x50]
movdqu xmm5, xmmword [rsi + rdi + 0x60]
por xmm1, xmm3
pxor xmm5, xmmword [rcx + rdi + 0x60]
por xmm1, xmm4
por xmm5, xmm1
movdqu xmm1, xmmword [rsi + rdi + 0x70]
pxor xmm1, xmmword [rcx + rdi + 0x70]
sub rdi, 0xffffffffffffff80
cmp rbx, r12
por xmm5, xmm1
movdqa xmm1, xmm5
ja 0x5211593a
nop dword [rax]
movdqa xmm0, xmm1
add r10, rbp
add r9, rbp
sub r11, rbp
psrldq xmm0, 8
por xmm0, xmm1
movdqa xmm2, xmm0
psrldq xmm2, 4
por xmm0, xmm2
movdqa xmm3, xmm0
psrldq xmm3, 2
por xmm0, xmm3
movdqa xmm4, xmm0
psrldq xmm4, 1
por xmm0, xmm4
movaps xmmword [rsp + 0x20], xmm0
movzx ecx, byte [rsp + 0x20]
or eax, ecx
cmp r8, rbp
je 0x52115b39
movzx r8d, byte [r9]
xor r8b, byte [r10]
or eax, r8d
test r11, r11
je 0x52115b39
movzx esi, byte [r10 + 1]
xor sil, byte [r9 + 1]
or eax, esi
cmp r11, 1
je 0x52115b39
movzx ebx, byte [r10 + 2]
xor bl, byte [r9 + 2]
or eax, ebx
cmp r11, 2
je 0x52115b39
movzx edx, byte [r10 + 3]
xor dl, byte [r9 + 3]
or eax, edx
cmp r11, 3
je 0x52115b39
movzx r12d, byte [r10 + 4]
xor r12b, byte [r9 + 4]
or eax, r12d
cmp r11, 4
je 0x52115b39
movzx edi, byte [r10 + 5]
xor dil, byte [r9 + 5]
or eax, edi
cmp r11, 5
je 0x52115b39
movzx ebp, byte [r10 + 6]
xor bpl, byte [r9 + 6]
or eax, ebp
cmp r11, 6
je 0x52115b39
movzx ecx, byte [r10 + 7]
xor cl, byte [r9 + 7]
or eax, ecx
cmp r11, 7
je 0x52115b39
movzx r8d, byte [r10 + 8]
xor r8b, byte [r9 + 8]
or eax, r8d
cmp r11, 8
je 0x52115b39
movzx esi, byte [r10 + 9]
xor sil, byte [r9 + 9]
or eax, esi
cmp r11, 9
je 0x52115b39
movzx ebx, byte [r10 + 0xa]
xor bl, byte [r9 + 0xa]
or eax, ebx
cmp r11, 0xa
je 0x52115b39
movzx edx, byte [r10 + 0xb]
xor dl, byte [r9 + 0xb]
or eax, edx
cmp r11, 0xb
je 0x52115b39
movzx r12d, byte [r10 + 0xc]
xor r12b, byte [r9 + 0xc]
or eax, r12d
cmp r11, 0xc
je 0x52115b39
movzx edi, byte [r10 + 0xd]
xor dil, byte [r9 + 0xd]
or eax, edi
cmp r11, 0xd
je 0x52115b39
movzx r9d, byte [r9 + 0xe]
xor r9b, byte [r10 + 0xe]
or eax, r9d
mov r10d, eax
shr r10b, 4
or r10d, eax
mov r11d, r10d
shr r11b, 2
or r10d, r11d
mov eax, r10d
shr al, 1
or eax, r10d
and eax, 1
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
test rsi, rsi
jne 0x52115698
mov r11, rdi
mov r9, rdx
mov r10, rcx
xor eax, eax
jmp 0x5211580e
lea rdx, str.src_misc_mem_neq.c
lea rcx, str.a___NULL
mov r8d, 0x29
call fcn.5210e1a0
lea rdx, str.src_misc_mem_neq.c
lea rcx, str.b___NULL
mov r8d, 0x2a
call fcn.5210e1a0
nop
nop