Function at 0x576d6620
Capabilities:
Encode data using xor

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x40
test rcx, rcx
je 0x576d6b4c
test rdx, rdx
je 0x576d6b65
xor eax, eax
test r8, r8
lea rdi, [r8 - 1]
je 0x576d6b28
mov rsi, rcx
neg rsi
and esi, 0xf
cmp rsi, r8
cmova rsi, r8
cmp r8, 0x12
ja 0x576d6b33
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 0x576d67d5
test rbx, rbx
je 0x576d6769
cmp rbx, 1
je 0x576d674e
cmp rbx, 2
je 0x576d6737
cmp rbx, 3
je 0x576d6721
cmp rbx, 4
je 0x576d670a
cmp rbx, 5
je 0x576d66f4
cmp rbx, 6
je 0x576d66dd
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 0x576d67d5
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 0x576d6769
cmp r8, rsi
je 0x576d6b09
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 0x576d69f2
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 0x576d69a0
test rdx, rdx
je 0x576d690a
cmp rdx, 1
je 0x576d68eb
cmp rdx, 2
je 0x576d68d5
cmp rdx, 3
je 0x576d68bf
cmp rdx, 4
je 0x576d68a9
cmp rdx, 5
je 0x576d6893
cmp rdx, 6
je 0x576d687d
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 0x576d69a0
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 0x576d690a
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 0x576d6b09
movzx r8d, byte [r9]
xor r8b, byte [r10]
or eax, r8d
test r11, r11
je 0x576d6b09
movzx esi, byte [r10 + 1]
xor sil, byte [r9 + 1]
or eax, esi
cmp r11, 1
je 0x576d6b09
movzx ebx, byte [r10 + 2]
xor bl, byte [r9 + 2]
or eax, ebx
cmp r11, 2
je 0x576d6b09
movzx edx, byte [r10 + 3]
xor dl, byte [r9 + 3]
or eax, edx
cmp r11, 3
je 0x576d6b09
movzx r12d, byte [r10 + 4]
xor r12b, byte [r9 + 4]
or eax, r12d
cmp r11, 4
je 0x576d6b09
movzx edi, byte [r10 + 5]
xor dil, byte [r9 + 5]
or eax, edi
cmp r11, 5
je 0x576d6b09
movzx ebp, byte [r10 + 6]
xor bpl, byte [r9 + 6]
or eax, ebp
cmp r11, 6
je 0x576d6b09
movzx ecx, byte [r10 + 7]
xor cl, byte [r9 + 7]
or eax, ecx
cmp r11, 7
je 0x576d6b09
movzx r8d, byte [r10 + 8]
xor r8b, byte [r9 + 8]
or eax, r8d
cmp r11, 8
je 0x576d6b09
movzx esi, byte [r10 + 9]
xor sil, byte [r9 + 9]
or eax, esi
cmp r11, 9
je 0x576d6b09
movzx ebx, byte [r10 + 0xa]
xor bl, byte [r9 + 0xa]
or eax, ebx
cmp r11, 0xa
je 0x576d6b09
movzx edx, byte [r10 + 0xb]
xor dl, byte [r9 + 0xb]
or eax, edx
cmp r11, 0xb
je 0x576d6b09
movzx r12d, byte [r10 + 0xc]
xor r12b, byte [r9 + 0xc]
or eax, r12d
cmp r11, 0xc
je 0x576d6b09
movzx edi, byte [r10 + 0xd]
xor dil, byte [r9 + 0xd]
or eax, edi
cmp r11, 0xd
je 0x576d6b09
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 0x576d6668
mov r11, rdi
mov r9, rdx
mov r10, rcx
xor eax, eax
jmp 0x576d67de
lea rdx, str.src_misc_mem_neq.c
lea rcx, str.a___NULL
mov r8d, 0x29
call fcn.576cf170
lea rdx, str.src_misc_mem_neq.c
lea rcx, str.b___NULL
mov r8d, 0x2a
call fcn.576cf170
nop
nop