Function at 0x180021d4d
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rdi
mov qword [rsp + 0x10], rsi
mov rax, rsp
mov rdi, rcx
mov rsi, rdx
mov rdx, r8
mov rcx, r9
endbr64
or rsi, rsi
jne 0x180021d6e
mov rdi, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
repz ret
push rbx
push r12
push r13
mov r11, rsi
mov r12, rdx
mov r13, rcx
xor r10, r10
xor rcx, rcx
lea rdi, [rdi + 8]
mov r10b, byte [rdi - 8]
mov cl, byte [rdi - 4]
cmp dword [rdi + 0x100], 0xffffffff
je 0x1800221c0
mov r8d, dword [0x180499ab0]
xor rbx, rbx
inc r10b
sub rbx, r10
sub r13, r12
mov eax, dword [rdi + r10*4]
test r11, 0xfffffffffffffff0
je 0x180022190
bt r8d, 0x1e
jb 0x180021f20
and rbx, 7
lea rsi, [r10 + 1]
je 0x180021e10
sub r11, rbx
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov dword [rdi + r10*4], edx
add al, dl
inc r10b
mov edx, dword [rdi + rax*4]
mov eax, dword [rdi + r10*4]
xor dl, byte [r12]
mov byte [r12 + r13], dl
lea r12, [r12 + 1]
dec rbx
jne 0x180021dd6
lea rsi, [r10 + 1]
jmp 0x180021e10
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4]
ror r8, 8
mov dword [rdi + r10*4], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 + 4]
ror r8, 8
mov dword [rdi + r10*4 + 4], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4 + 8]
ror r8, 8
mov dword [rdi + r10*4 + 8], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 + 0xc]
ror r8, 8
mov dword [rdi + r10*4 + 0xc], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4 + 0x10]
ror r8, 8
mov dword [rdi + r10*4 + 0x10], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 + 0x14]
ror r8, 8
mov dword [rdi + r10*4 + 0x14], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov ebx, dword [rdi + rsi*4 + 0x18]
ror r8, 8
mov dword [rdi + r10*4 + 0x18], edx
add dl, al
mov r8b, byte [rdi + rdx*4]
add sil, 8
add cl, bl
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
mov eax, dword [rdi + rsi*4 - 4]
ror r8, 8
mov dword [rdi + r10*4 + 0x1c], edx
add dl, bl
mov r8b, byte [rdi + rdx*4]
add r10b, 8
ror r8, 8
sub r11, 8
xor r8, qword [r12]
mov qword [r12 + r13], r8
lea r12, [r12 + 8]
test r11, 0xfffffffffffffff8
jne 0x180021e10
cmp r11, 0
jne 0x180022190
jmp 0x1800223b0
test r11, 0xffffffffffffffe0
je 0x180022190
and rbx, 0xf
je 0x180021f68
sub r11, rbx
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov dword [rdi + r10*4], edx
add al, dl
inc r10b
mov edx, dword [rdi + rax*4]
mov eax, dword [rdi + r10*4]
xor dl, byte [r12]
mov byte [r12 + r13], dl
lea r12, [r12 + 1]
dec rbx
jne 0x180021f36
mov rbx, rcx
xor rcx, rcx
mov cl, bl
lea rsi, [rdi + r10*4]
add cl, al
mov edx, dword [rdi + rcx*4]
pxor xmm0, xmm0
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 4]
movzx eax, al
mov dword [rsi], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 0
jmp 0x180021fc6
add cl, al
mov edx, dword [rdi + rcx*4]
pxor xmm2, xmm0
psllq xmm1, 8
pxor xmm0, xmm0
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 4]
movzx eax, al
mov dword [rsi], edx
pxor xmm2, xmm1
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 0
movdqu xmmword [r12 + r13], xmm2
lea r12, [r12 + 0x10]
mov edx, dword [rdi + rcx*4]
pxor xmm1, xmm1
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 8]
movzx ebx, bl
mov dword [rsi + 4], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 0
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0xc]
movzx eax, al
mov dword [rsi + 8], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 1
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x10]
movzx ebx, bl
mov dword [rsi + 0xc], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 1
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x14]
movzx eax, al
mov dword [rsi + 0x10], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 2
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x18]
movzx ebx, bl
mov dword [rsi + 0x14], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 2
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x1c]
movzx eax, al
mov dword [rsi + 0x18], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 3
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x20]
movzx ebx, bl
mov dword [rsi + 0x1c], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 3
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x24]
movzx eax, al
mov dword [rsi + 0x20], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 4
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x28]
movzx ebx, bl
mov dword [rsi + 0x24], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 4
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x2c]
movzx eax, al
mov dword [rsi + 0x28], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 5
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x30]
movzx ebx, bl
mov dword [rsi + 0x2c], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 5
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x34]
movzx eax, al
mov dword [rsi + 0x30], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 6
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
mov eax, dword [rsi + 0x38]
movzx ebx, bl
mov dword [rsi + 0x34], edx
add cl, al
pinsrw xmm1, word [rdi + rbx*4], 6
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
add al, dl
mov ebx, dword [rsi + 0x3c]
movzx eax, al
mov dword [rsi + 0x38], edx
add cl, bl
pinsrw xmm0, word [rdi + rax*4], 7
add r10b, 0x10
movdqu xmm2, xmmword [r12]
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], ebx
add bl, dl
movzx ebx, bl
mov dword [rsi + 0x3c], edx
lea rsi, [rdi + r10*4]
pinsrw xmm1, word [rdi + rbx*4], 7
mov eax, dword [rsi]
mov rbx, rcx
xor rcx, rcx
sub r11, 0x10
mov cl, bl
test r11, 0xfffffffffffffff0
jne 0x180021f90
psllq xmm1, 8
pxor xmm2, xmm0
pxor xmm2, xmm1
movdqu xmmword [r12 + r13], xmm2
lea r12, [r12 + 0x10]
cmp r11, 0
jne 0x180022190
jmp 0x1800223b0
add cl, al
mov edx, dword [rdi + rcx*4]
mov dword [rdi + rcx*4], eax
mov dword [rdi + r10*4], edx
add al, dl
inc r10b
mov edx, dword [rdi + rax*4]
mov eax, dword [rdi + r10*4]
xor dl, byte [r12]
mov byte [r12 + r13], dl
lea r12, [r12 + 1]
dec r11
jne 0x180022190
jmp 0x1800223b0
add r10b, 1
movzx eax, byte [rdi + r10]
test r11, 0xfffffffffffffff8
je 0x180022370
jmp 0x1800221e0
mov r8d, dword [r12]
mov r9d, dword [r12 + 4]
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x18002220a
mov rbx, rax
add dl, al
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x180022235
mov rax, rbx
add dl, bl
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x180022260
mov rbx, rax
add dl, al
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x18002228b
mov rax, rbx
add dl, bl
xor r8b, byte [rdi + rdx]
ror r8d, 8
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x1800222b6
mov rbx, rax
add dl, al
xor r9b, byte [rdi + rdx]
ror r9d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x1800222e1
mov rax, rbx
add dl, bl
xor r9b, byte [rdi + rdx]
ror r9d, 8
add cl, al
lea rsi, [r10 + 1]
movzx edx, byte [rdi + rcx]
movzx esi, sil
movzx ebx, byte [rdi + rsi]
mov byte [rdi + rcx], al
cmp rcx, rsi
mov byte [rdi + r10], dl
jne 0x18002230c
mov rbx, rax
add dl, al
xor r9b, byte [rdi + rdx]
ror r9d, 8
add cl, bl
lea r10, [rsi + 1]
movzx edx, byte [rdi + rcx]
movzx r10d, r10b
movzx eax, byte [rdi + r10]
mov byte [rdi + rcx], bl
cmp rcx, r10
mov byte [rdi + rsi], dl
jne 0x180022337
mov rax, rbx
add dl, bl
xor r9b, byte [rdi + rdx]
ror r9d, 8
lea r11, [r11 - 8]
mov dword [r13], r8d
lea r12, [r12 + 8]
mov dword [r13 + 4], r9d
lea r13, [r13 + 8]
test r11, 0xfffffffffffffff8
jne 0x1800221e0
cmp r11, 0
jne 0x180022370
jmp 0x1800223b0
add cl, al
movzx ecx, cl
movzx edx, byte [rdi + rcx]
mov byte [rdi + rcx], al
mov byte [rdi + r10], dl
add dl, al
add r10b, 1
movzx edx, dl
movzx r10d, r10b
movzx edx, byte [rdi + rdx]
movzx eax, byte [rdi + r10]
xor dl, byte [r12]
lea r12, [r12 + 1]
mov byte [r13], dl
lea r13, [r13 + 1]
sub r11, 1
jne 0x180022370
jmp 0x1800223b0
sub r10b, 1
mov dword [rdi - 8], r10d
mov dword [rdi - 4], ecx
mov r13, qword [rsp]
mov r12, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
add rsp, 0x18
mov rdi, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
repz ret