Function at 0x7ff9c51e7fc0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x88
lea r14, [rcx + 0x18]
mov rbp, rcx
mov ecx, 0xfffffff
mov rax, qword [r14]
mov rsi, rdx
lea rdx, [0x7ff9c51c0000]
mov r13d, dword [rax + 5]
mov r15d, dword [rax + 1]
mov ebx, dword [rax + 9]
and r13, rcx
and r15, rcx
and rbx, rcx
add r13, rdx
lea r9, [rax + 0xd]
lea r8, [0x7ff9c5205a08]
lea rdi, [r9 - 1]
xor r12d, r12d
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x78], r15
mov qword [rsp + 0x30], rbx
cmp rdi, r8
jb 0x7ff9c51e8078
mov ecx, dword [0x7ff9c51fd854]
mov eax, dword [0x7ff9c51fd850]
imul ecx, eax
mov eax, ecx
add rax, r8
cmp rdi, rax
jae 0x7ff9c51e8078
mov ecx, dword [0x7ff9c51fd850]
mov rax, rdi
sub rax, r8
cqo
idiv rcx
mov edx, dword [0x7ff9c51fd850]
imul rdx, rax
add r8, rdx
lea rdx, [0x7ff9c51c0000]
jmp 0x7ff9c51e807b
mov r8, r12
cmp r8, r12
jne 0x7ff9c51e808a
mov r8, rdi
and r8, 0xffffffffffff0000
mov r11d, dword [0x7ff9c51fd850]
sub r9, r8
mov r10d, r13d
lea rax, [r9 - 0x40]
cmp rax, r12
cmovl rax, r12
sub r11, rbx
sub r10d, edx
lea rdi, [rax + r8]
xor eax, eax
inc r11
lea ecx, [rax + 0x40]
mov r9, r11
rep stosb byte [rdi], al
mov rdi, r12
cmp r11, r12
je 0x7ff9c51e80f7
mov rdx, qword [0x7ff9c5205490]
imul rdx, rdx, 0x343fd
shl rdi, 0x10
shr r9, 0x10
add rdx, 0x269ec3
mov rcx, rdx
shr rcx, 0x10
movzx eax, cx
or rdi, rax
cmp r9, r12
jne 0x7ff9c51e80c8
mov qword [0x7ff9c5205490], rdx
xor edx, edx
mov rax, rdi
mov ecx, r10d
div r11
lea r12, [rdx + r8]
mov rdx, rbx
mov r8, r12
mov qword [rsp + 0x50], r12
call fcn.7ff9c51dc17c
mov rdx, qword [rbx + r13]
xor dil, dil
mov qword [rsp + 0x40], rdx
test rbx, rbx
je 0x7ff9c51e86f1
lea rcx, [rsp + 0x40]
call fcn.7ff9c51f3cf4
mov r9d, dword [rsp + 0x44]
mov r11, qword [rsp + 0x40]
and qword [rsp + 0x20], 0
mov eax, 0xfffffff
lea rdx, [0x7ff9c51c0000]
and r11, rax
and r9, rax
mov rax, qword [0x7ff9c51fd7b8]
mov rcx, rdx
add r11, rdx
sub rcx, rax
mov qword [rsp + 0x28], rcx
jne 0x7ff9c51e81db
xor r10d, r10d
test r9, r9
je 0x7ff9c51e848a
mov edx, dword [rsp + 0x24]
mov r8d, dword [rsp + 0x20]
mov r14d, 0x5d178fad
movzx ecx, byte [r11 + r10]
inc r10
add ecx, r14d
add r8d, ecx
add ecx, edx
mov eax, ecx
imul eax, eax, 0x68a0
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, rax, 0x5d178fad
mov qword [rsp + 0xe0], rax
shr rax, 0x20
mov edx, dword [rsp + 0xe0]
add edx, eax
add r8d, edx
cmp r10, r9
jb 0x7ff9c51e8189
mov dword [rsp + 0x24], edx
mov dword [rsp + 0x20], r8d
jmp 0x7ff9c51e848a
movsxd rcx, dword [0x7ff9c51c003c]
lea rax, [r11 + r9]
mov r10, 0xfffffffffffff000
mov r8d, dword [rcx + rdx + 0xb0]
mov r15d, dword [rcx + rdx + 0xb4]
mov qword [rsp + 0x60], rax
mov eax, r11d
add r8, rdx
sub eax, edx
mov ebx, eax
mov esi, eax
add rax, r9
mov r9, rax
and rbx, r10
and r9, r10
sub rsi, rbx
sub rax, r9
mov qword [rsp + 0x58], r9
add r15, r8
mov qword [rsp + 0x70], rax
jmp 0x7ff9c51e823e
mov eax, dword [r8]
cmp rax, rbx
jae 0x7ff9c51e8243
mov eax, dword [r8 + 4]
add r8, rax
cmp r8, r15
jne 0x7ff9c51e822f
xor r10d, r10d
cmp r8, r15
je 0x7ff9c51e827d
mov eax, dword [r8]
cmp rax, rbx
jne 0x7ff9c51e827d
mov ecx, dword [r8 + 4]
sub rcx, 8
shr rcx, 1
je 0x7ff9c51e827d
lea rdx, [r8 + 8]
movzx eax, word [rdx]
and eax, 0xfff
cmp rax, rsi
jae 0x7ff9c51e827d
inc r10
add rdx, 2
cmp r10, rcx
jne 0x7ff9c51e8264
mov r12d, dword [rsp + 0x24]
mov ebp, dword [rsp + 0x20]
mov rdi, qword [rsp + 0x28]
mov r14d, 0x5d178fad
lea r13, [0x7ff9c51c0000]
cmp r8, r15
je 0x7ff9c51e8422
mov eax, dword [r8]
cmp rax, r9
ja 0x7ff9c51e8422
mov ecx, dword [r8 + 4]
lea rax, [rcx - 8]
shr rax, 1
cmp r10, rax
jne 0x7ff9c51e82da
add r8, rcx
cmp r8, r15
je 0x7ff9c51e8422
mov eax, dword [r8]
cmp rax, r9
ja 0x7ff9c51e8422
xor r10d, r10d
jmp 0x7ff9c51e82ad
mov eax, dword [r8]
cmp rax, r9
jne 0x7ff9c51e82f8
movzx eax, word [r8 + r10*2 + 8]
and eax, 0xfff
cmp rax, qword [rsp + 0x70]
jae 0x7ff9c51e8422
mov rax, r10
mov ecx, 0xf000
inc r10
test word [r8 + rax*2 + 8], cx
je 0x7ff9c51e8298
movzx edx, word [r8 + rax*2 + 8]
xor ebx, ebx
mov esi, edx
and esi, 0xfff
add esi, dword [r8]
add rsi, r13
mov r9, rsi
sub r9, r11
je 0x7ff9c51e8372
movzx ecx, byte [rbx + r11]
inc rbx
add ecx, r14d
add ebp, ecx
add ecx, r12d
mov eax, ecx
imul eax, eax, 0x68a0
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, rax, 0x5d178fad
mov qword [rsp + 0x28], rax
shr rax, 0x20
mov r12d, dword [rsp + 0x28]
add r12d, eax
add ebp, r12d
cmp rbx, r9
jb 0x7ff9c51e8329
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], r12d
mov rax, qword [rsi]
shr edx, 0xc
mov qword [rsp + 0x38], rax
cmp edx, 3
je 0x7ff9c51e838e
sub edx, 0xa
neg edx
sbb edx, edx
add edx, 3
jmp 0x7ff9c51e8393
mov edx, 2
mov r9, rdi
neg r9
sub edx, 2
je 0x7ff9c51e83b8
cmp edx, 1
je 0x7ff9c51e83a9
or rdx, 0xffffffffffffffff
jmp 0x7ff9c51e83c2
add rax, r9
mov edx, 8
mov qword [rsp + 0x38], rax
jmp 0x7ff9c51e83c2
add dword [rsp + 0x38], r9d
mov edx, 4
xor r9d, r9d
test rdx, rdx
je 0x7ff9c51e8414
movzx ecx, byte [rsp + r9 + 0x38]
inc r9
add ecx, r14d
add ebp, ecx
add ecx, r12d
mov eax, ecx
imul eax, eax, 0x68a0
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, rax, 0x5d178fad
mov qword [rsp + 0x28], rax
shr rax, 0x20
mov r12d, dword [rsp + 0x28]
add r12d, eax
add ebp, r12d
cmp r9, rdx
jb 0x7ff9c51e83ca
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], r12d
mov r9, qword [rsp + 0x58]
lea r11, [rdx + rsi]
jmp 0x7ff9c51e8298
mov r8, qword [rsp + 0x60]
mov r13, qword [rsp + 0x68]
xor edx, edx
sub r8, r11
mov dil, dl
je 0x7ff9c51e8485
movzx ecx, byte [rdx + r11]
inc rdx
add ecx, r14d
add ebp, ecx
add ecx, r12d
mov eax, ecx
imul eax, eax, 0x68a0
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, rax, 0x5d178fad
mov qword [rsp + 0xe0], rax
shr rax, 0x20
mov r12d, dword [rsp + 0xe0]
add r12d, eax
add ebp, r12d
cmp rdx, r8
jb 0x7ff9c51e8436
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], r12d
mov rbx, qword [rsp + 0x30]
xor ecx, ecx
mov rax, rcx
inc rcx
and eax, 7
mov al, byte [rsp + rax + 0x20]
mov byte [rsp + rcx + 0xe7], al
cmp rcx, 6
jb 0x7ff9c51e848c
call fcn.7ff9c51d8310
mov r11b, byte [rsp + 0xe8]
mov bpl, byte [rsp + 0xea]
mov r15b, byte [rsp + 0xec]
mov r14b, byte [rsp + 0xed]
mov r12b, byte [rsp + 0xe9]
or r11b, 1
or bpl, 1
or r15b, 1
or r14b, 1
lea rsi, [rbx - 1]
mov byte [rsp + 0xe8], r11b
mov byte [rsp + 0xea], bpl
mov byte [rsp + 0xec], r15b
mov byte [rsp + 0xed], r14b
test rsi, rsi
je 0x7ff9c51e8668
mov rax, qword [rsp + 0x50]
lea rbx, [rsi + r13]
sub rax, r13
mov qword [rsp + 0xe0], rax
mov r9b, byte [rbx]
movzx ecx, r9b
test sil, 1
je 0x7ff9c51e85ad
xor r9b, byte [rsp + 0xeb]
movzx r8d, byte [rsp + 0xeb]
and r9b, 1
je 0x7ff9c51e8561
movzx edx, bpl
mov eax, r8d
shr eax, 1
shr edx, 1
xor edx, eax
mov eax, ecx
btc eax, 8
sar eax, 1
xor edx, eax
jmp 0x7ff9c51e8568
mov edx, ecx
xor edx, r8d
shr edx, 1
movzx r10d, byte [rbx - 1]
mov eax, r10d
xor eax, edx
test al, 1
je 0x7ff9c51e859e
test r9b, r9b
je 0x7ff9c51e8591
btc ecx, 8
shr r8d, 1
movzx edx, bpl
shr edx, 1
sar ecx, 1
xor edx, r8d
xor edx, ecx
jmp 0x7ff9c51e8598
mov edx, ecx
xor edx, r8d
shr edx, 1
movzx eax, r14b
jmp 0x7ff9c51e860e
test r9b, r9b
je 0x7ff9c51e863a
movzx edx, bpl
jmp 0x7ff9c51e8628
xor r9b, r12b
movzx r8d, r12b
and r9b, 1
je 0x7ff9c51e85d3
movzx edx, r11b
mov eax, r8d
shr eax, 1
shr edx, 1
xor edx, eax
mov eax, ecx
btc eax, 8
sar eax, 1
xor edx, eax
jmp 0x7ff9c51e85da
mov edx, ecx
xor edx, r8d
shr edx, 1
movzx r10d, byte [rbx - 1]
mov eax, r10d
xor eax, edx
test al, 1
je 0x7ff9c51e861f
test r9b, r9b
je 0x7ff9c51e8603
btc ecx, 8
shr r8d, 1
movzx edx, r11b
shr edx, 1
sar ecx, 1
xor edx, r8d
xor edx, ecx
jmp 0x7ff9c51e860a
mov edx, ecx
xor edx, r8d
shr edx, 1
movzx eax, r15b
shr eax, 1
xor r10d, edx
btc eax, 7
sar r10d, 1
xor eax, r10d
jmp 0x7ff9c51e8648
test r9b, r9b
je 0x7ff9c51e863a
movzx edx, r11b
btc ecx, 8
shr edx, 1
shr r8d, 1
sar ecx, 1
xor edx, r8d
xor edx, ecx
jmp 0x7ff9c51e8641
mov edx, ecx
xor edx, r8d
shr edx, 1
mov eax, r10d
xor eax, edx
sar eax, 1
mov rcx, qword [rsp + 0xe0]
xor dil, al
mov byte [rcx + rbx], al
dec rbx
sub rsi, 1
jne 0x7ff9c51e8524
mov rbx, qword [rsp + 0x30]
movzx ecx, byte [r13]
mov dl, byte [r13]
movzx eax, r12b
xor ecx, eax
xor dl, r12b
shr ecx, 1
and dl, 1
je 0x7ff9c51e868f
movzx eax, r11b
btc eax, 8
sar eax, 1
xor eax, ecx
jmp 0x7ff9c51e8691
mov eax, ecx
test al, 1
je 0x7ff9c51e86b5
test dl, dl
je 0x7ff9c51e86a7
movzx edx, r11b
btc edx, 8
sar edx, 1
xor edx, ecx
jmp 0x7ff9c51e86a9
mov edx, ecx
movzx eax, r15b
xor eax, edx
btc eax, 8
jmp 0x7ff9c51e86c9
test dl, dl
je 0x7ff9c51e86c7
movzx eax, r11b
btc eax, 8
sar eax, 1
xor eax, ecx
jmp 0x7ff9c51e86c9
mov eax, ecx
mov r12, qword [rsp + 0x50]
mov r14, qword [rsp + 0x48]
mov rsi, qword [rsp + 0xd8]
mov r15, qword [rsp + 0x78]
mov rbp, qword [rsp + 0xd0]
sar eax, 1
mov byte [r12], al
xor dil, al
cmp dil, byte [rbx + r13 + 8]
je 0x7ff9c51e87b7
call fcn.7ff9c51d7d60
mov r8, r14
lea r10, [0x7ff9c51d1068]
and r8, 0xfffffffffffffff8
mov r11, rax
mov qword [rbp + 0x10], r10
mov rcx, qword [0x7ff9c5205490]
lea r9, [r8 + 0xfff]
and r11, 0xfffffffffffff000
and r9, 0xfffffffffffff000
xor edi, edi
mov ebx, 0xffff
imul rcx, rcx, 0x343fd
shl rdi, 0x10
shr rbx, 0x10
add rcx, 0x269ec3
mov rax, rcx
shr rax, 0x10
movzx edx, ax
or rdi, rdx
test rbx, rbx
jne 0x7ff9c51e8739
mov qword [0x7ff9c5205490], rcx
movabs rax, 0x8000800080008001
mov qword [rsi + 0x98], r11
mul rdi
shr rdx, 0xf
imul rdx, rdx, 0xffff
sub rdi, rdx
inc rdi
mov qword [rsi + 0xb0], rdi
mov qword [rsp + 0xd0], rbx
jmp 0x7ff9c51e87ad
mov rax, qword [rsp + 0xd0]
mov qword [r8], rax
add r8, 8
cmp r8, r9
jb 0x7ff9c51e879e
jmp 0x7ff9c51e88ea
mov rax, qword [0x7ff9c51fd7b8]
lea rcx, [0x7ff9c51c0000]
mov rbx, r13
mov rsi, rcx
sub rbx, r12
sub rsi, rax
jne 0x7ff9c51e87dc
test rbx, rbx
je 0x7ff9c51e88d3
mov rbp, qword [rsp + 0x30]
mov r11, r12
xor edi, edi
sub r11, r13
sub r13d, ecx
mov rcx, qword [0x7ff9c51fd7a0]
lea r8d, [rcx - 1]
add ebp, r13d
lea r9, [0x7ff9c51fd7a0]
test r8d, r8d
js 0x7ff9c51e883a
lea eax, [r8 + rdi]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r9d, dword [r9 + rdx*4 + 4]
and r9d, 0xfffffff
cmp r13d, r9d
jae 0x7ff9c51e8829
lea r8d, [rax - 1]
jmp 0x7ff9c51e882e
jbe 0x7ff9c51e8899
lea edi, [rax + 1]
cmp r8d, edi
lea r9, [0x7ff9c51fd7a0]
jge 0x7ff9c51e8806
movsxd r10, edi
mov eax, ecx
cmp r10, rax
jae 0x7ff9c51e88d3
lea r13, [0x7ff9c51fd7a0]
lea r14, [0x7ff9c51c0000]
mov edx, dword [r13 + r10*4 + 4]
mov edi, 0xfffffff
mov eax, edx
and eax, edi
cmp eax, ebp
jae 0x7ff9c51e88ce
mov r9, rdx
xor r8d, r8d
and r9, rdi
mov edi, edx
sar edx, 0x1e
shl edi, 2
add r9, r14
and edx, 3
sar edi, 0x1e
and edi, 3
sub edi, 1
je 0x7ff9c51e88a3
sub edi, 1
je 0x7ff9c51e889e
cmp edi, 1
jne 0x7ff9c51e88a9
mov r8, rsi
jmp 0x7ff9c51e88a9
movsxd r10, eax
jmp 0x7ff9c51e883d
mov r8, rbx
jmp 0x7ff9c51e88a9
mov r8, rsi
sub r8, rbx
sub edx, 2
je 0x7ff9c51e88b9
cmp edx, 1
jne 0x7ff9c51e88c4
add qword [r9 + r11], r8
jmp 0x7ff9c51e88bd
add dword [r9 + r11], r8d
mov rcx, qword [0x7ff9c51fd7a0]
inc r10
mov eax, ecx
cmp r10, rax
jb 0x7ff9c51e8856
mov r14, qword [rsp + 0x48]
mov eax, dword [0x7ff9c51fd850]
call fcn.7ff9c51dc260
mov rbp, qword [rsp + 0xd0]
lea r10, [r12 + r15]
mov qword [rbp + 0x10], r10
add qword [r14], 0xd
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret