Function at 0x7ff9c51e7674
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
mov rax, qword [rcx + 0x10]
mov r14, rcx
mov ecx, 0xfffffff
mov r13d, dword [rax + 5]
mov r15d, dword [rax + 1]
mov ebx, dword [rax + 9]
and r13, rcx
and r15, rcx
and rbx, rcx
lea r9, [rax + 0xd]
mov rsi, rdx
lea rdx, [0x7ff9c51c0000]
add r13, rdx
lea r8, [0x7ff9c5205a08]
lea rdi, [r9 - 1]
xor ebp, ebp
mov qword [rsp + 0x70], r15
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x60], r13
cmp rdi, r8
jb 0x7ff9c51e7723
mov ecx, dword [0x7ff9c51fd854]
mov eax, dword [0x7ff9c51fd850]
imul ecx, eax
mov eax, ecx
add rax, r8
cmp rdi, rax
jae 0x7ff9c51e7723
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 0x7ff9c51e7726
mov r8, rbp
cmp r8, rbp
jne 0x7ff9c51e7735
mov r8, rdi
and r8, 0xffffffffffff0000
mov r11d, dword [0x7ff9c51fd850]
sub r9, r8
mov r10d, r13d
lea rax, [r9 - 0x40]
cmp rax, rbp
cmovl rax, rbp
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, rbp
cmp r11, rbp
je 0x7ff9c51e77a2
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, rbp
jne 0x7ff9c51e7773
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 + 0x48], r12
call fcn.7ff9c51dc17c
mov rdx, qword [rbx + r13]
mov dil, bpl
mov qword [rsp + 0x40], rdx
cmp rbx, rbp
jbe 0x7ff9c51e7daa
lea rcx, [rsp + 0x40]
call fcn.7ff9c51f3cf4
mov r9d, dword [rsp + 0x44]
mov r11, qword [rsp + 0x40]
mov eax, 0xfffffff
lea rdx, [0x7ff9c51c0000]
mov qword [rsp + 0x20], rbp
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 0x7ff9c51e7885
mov r10, rbp
cmp r9, rbp
jbe 0x7ff9c51e7b36
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 0x7ff9c51e7833
mov dword [rsp + 0x24], edx
mov dword [rsp + 0x20], r8d
jmp 0x7ff9c51e7b36
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 + 0x58], 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 + 0x68], r9
add r15, r8
mov qword [rsp + 0x50], rax
jmp 0x7ff9c51e78e8
mov eax, dword [r8]
cmp rax, rbx
jae 0x7ff9c51e78ed
mov eax, dword [r8 + 4]
add r8, rax
cmp r8, r15
jne 0x7ff9c51e78d9
mov r10, rbp
cmp r8, r15
je 0x7ff9c51e7927
mov eax, dword [r8]
cmp rax, rbx
jne 0x7ff9c51e7927
mov ecx, dword [r8 + 4]
sub rcx, 8
shr rcx, 1
je 0x7ff9c51e7927
lea rdx, [r8 + 8]
movzx eax, word [rdx]
and eax, 0xfff
cmp rax, rsi
jae 0x7ff9c51e7927
inc r10
add rdx, 2
cmp r10, rcx
jne 0x7ff9c51e790e
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 0x7ff9c51e7acc
mov eax, dword [r8]
cmp rax, r9
ja 0x7ff9c51e7acc
mov ecx, dword [r8 + 4]
lea rax, [rcx - 8]
shr rax, 1
cmp r10, rax
jne 0x7ff9c51e7984
add r8, rcx
cmp r8, r15
je 0x7ff9c51e7acc
mov eax, dword [r8]
cmp rax, r9
ja 0x7ff9c51e7acc
xor r10d, r10d
jmp 0x7ff9c51e7957
mov eax, dword [r8]
cmp rax, r9
jne 0x7ff9c51e79a2
movzx eax, word [r8 + r10*2 + 8]
and eax, 0xfff
cmp rax, qword [rsp + 0x50]
jae 0x7ff9c51e7acc
mov rax, r10
mov ecx, 0xf000
inc r10
test word [r8 + rax*2 + 8], cx
je 0x7ff9c51e7942
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 0x7ff9c51e7a1c
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 0x7ff9c51e79d3
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], r12d
mov rax, qword [rsi]
shr edx, 0xc
mov qword [rsp + 0x30], rax
cmp edx, 3
je 0x7ff9c51e7a38
sub edx, 0xa
neg edx
sbb edx, edx
add edx, 3
jmp 0x7ff9c51e7a3d
mov edx, 2
mov r9, rdi
neg r9
sub edx, 2
je 0x7ff9c51e7a62
cmp edx, 1
je 0x7ff9c51e7a53
or rdx, 0xffffffffffffffff
jmp 0x7ff9c51e7a6c
add rax, r9
mov edx, 8
mov qword [rsp + 0x30], rax
jmp 0x7ff9c51e7a6c
add dword [rsp + 0x30], r9d
mov edx, 4
xor r9d, r9d
test rdx, rdx
je 0x7ff9c51e7abe
movzx ecx, byte [rsp + r9 + 0x30]
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 0x7ff9c51e7a74
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], r12d
mov r9, qword [rsp + 0x68]
lea r11, [rdx + rsi]
jmp 0x7ff9c51e7942
mov r8, qword [rsp + 0x58]
mov r13, qword [rsp + 0x60]
xor edx, edx
sub r8, r11
mov dil, dl
je 0x7ff9c51e7b2f
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 0x7ff9c51e7ae0
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], r12d
mov rbx, qword [rsp + 0x38]
xor ebp, ebp
mov rcx, rbp
mov rax, rcx
inc rcx
and eax, 7
mov al, byte [rsp + rax + 0x20]
mov byte [rsp + rcx + 0xe7], al
cmp rcx, 6
jb 0x7ff9c51e7b39
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 0x7ff9c51e7d22
mov rax, qword [rsp + 0x48]
lea rbx, [rsi + r13]
sub rax, r13
mov qword [rsp + 0xe0], rax
mov r9b, byte [rbx]
movzx ecx, r9b
test sil, 1
je 0x7ff9c51e7c67
xor r9b, byte [rsp + 0xeb]
movzx r8d, byte [rsp + 0xeb]
and r9b, 1
je 0x7ff9c51e7c12
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 0x7ff9c51e7c19
mov edx, ecx
xor edx, r8d
shr edx, 1
movzx r10d, byte [rbx - 1]
mov eax, r10d
xor eax, edx
test al, 1
je 0x7ff9c51e7c4f
test r9b, r9b
je 0x7ff9c51e7c42
btc ecx, 8
shr r8d, 1
movzx edx, bpl
shr edx, 1
sar ecx, 1
xor edx, r8d
xor edx, ecx
jmp 0x7ff9c51e7c49
mov edx, ecx
xor edx, r8d
shr edx, 1
movzx eax, r14b
jmp 0x7ff9c51e7cc8
test r9b, r9b
je 0x7ff9c51e7c5d
movzx edx, bpl
jmp 0x7ff9c51e7ce2
mov edx, ecx
xor edx, r8d
jmp 0x7ff9c51e7cf9
xor r9b, r12b
movzx r8d, r12b
and r9b, 1
je 0x7ff9c51e7c8d
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 0x7ff9c51e7c94
mov edx, r8d
xor edx, ecx
shr edx, 1
movzx r10d, byte [rbx - 1]
mov eax, r10d
xor eax, edx
test al, 1
je 0x7ff9c51e7cd9
test r9b, r9b
je 0x7ff9c51e7cbd
btc ecx, 8
shr r8d, 1
movzx edx, r11b
shr edx, 1
sar ecx, 1
xor edx, r8d
xor edx, ecx
jmp 0x7ff9c51e7cc4
mov edx, r8d
xor edx, ecx
shr edx, 1
movzx eax, r15b
shr eax, 1
xor r10d, edx
btc eax, 7
sar r10d, 1
xor eax, r10d
jmp 0x7ff9c51e7d02
test r9b, r9b
je 0x7ff9c51e7cf4
movzx edx, r11b
btc ecx, 8
shr edx, 1
shr r8d, 1
sar ecx, 1
xor edx, r8d
xor edx, ecx
jmp 0x7ff9c51e7cfb
mov edx, r8d
xor edx, ecx
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 0x7ff9c51e7bd1
mov rbx, qword [rsp + 0x38]
movzx ecx, byte [r13]
mov dl, byte [r13]
movzx eax, r12b
xor ecx, eax
xor dl, r12b
shr ecx, 1
and dl, 1
je 0x7ff9c51e7d49
movzx eax, r11b
btc eax, 8
sar eax, 1
xor eax, ecx
jmp 0x7ff9c51e7d4b
mov eax, ecx
xor ebp, ebp
test al, 1
je 0x7ff9c51e7d72
cmp dl, bpl
je 0x7ff9c51e7d64
movzx edx, r11b
btc edx, 8
sar edx, 1
xor edx, ecx
jmp 0x7ff9c51e7d66
mov edx, ecx
movzx eax, r15b
xor eax, edx
btc eax, 8
jmp 0x7ff9c51e7d87
cmp dl, bpl
je 0x7ff9c51e7d85
movzx eax, r11b
btc eax, 8
sar eax, 1
xor eax, ecx
jmp 0x7ff9c51e7d87
mov eax, ecx
mov r12, qword [rsp + 0x48]
mov r14, qword [rsp + 0xd0]
mov rsi, qword [rsp + 0xd8]
mov r15, qword [rsp + 0x70]
sar eax, 1
mov byte [r12], al
xor dil, al
cmp dil, byte [rbx + r13 + 8]
je 0x7ff9c51e7e73
call fcn.7ff9c51d7d60
lea r8, [r14 + 0x18]
lea r10, [0x7ff9c51d1068]
and r8, 0xfffffffffffffff8
mov rbx, rax
mov qword [r14 + 0x10], r10
mov rcx, qword [0x7ff9c5205490]
lea r9, [r8 + 0xfff]
and rbx, 0xfffffffffffff000
mov rdi, rbp
mov r11d, 0xffff
and r9, 0xfffffffffffff000
imul rcx, rcx, 0x343fd
shl rdi, 0x10
shr r11, 0x10
add rcx, 0x269ec3
mov rax, rcx
shr rax, 0x10
movzx edx, ax
or rdi, rdx
cmp r11, rbp
jne 0x7ff9c51e7df5
mov qword [0x7ff9c5205490], rcx
movabs rax, 0x8000800080008001
mov qword [rsi + 0x98], rbx
mul rdi
shr rdx, 0xf
imul rdx, rdx, 0xffff
sub rdi, rdx
inc rdi
mov qword [rsi + 0xb0], rdi
mov qword [rsp + 0xd0], rbp
jmp 0x7ff9c51e7e69
mov rax, qword [rsp + 0xd0]
mov qword [r8], rax
add r8, 8
cmp r8, r9
jb 0x7ff9c51e7e5a
jmp 0x7ff9c51e7fa1
mov rax, qword [0x7ff9c51fd7b8]
lea rcx, [0x7ff9c51c0000]
mov rbx, r13
mov rsi, rcx
sub rbx, r12
sub rsi, rax
jne 0x7ff9c51e7e98
cmp rbx, rbp
je 0x7ff9c51e7f92
mov rbp, qword [rsp + 0x38]
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 0x7ff9c51e7ef6
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 0x7ff9c51e7ee5
lea r8d, [rax - 1]
jmp 0x7ff9c51e7eea
jbe 0x7ff9c51e7f55
lea edi, [rax + 1]
cmp r8d, edi
lea r9, [0x7ff9c51fd7a0]
jge 0x7ff9c51e7ec2
movsxd r10, edi
mov eax, ecx
cmp r10, rax
jae 0x7ff9c51e7f92
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 0x7ff9c51e7f8a
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 0x7ff9c51e7f5f
sub edi, 1
je 0x7ff9c51e7f5a
cmp edi, 1
jne 0x7ff9c51e7f65
mov r8, rsi
jmp 0x7ff9c51e7f65
movsxd r10, eax
jmp 0x7ff9c51e7ef9
mov r8, rbx
jmp 0x7ff9c51e7f65
mov r8, rsi
sub r8, rbx
sub edx, 2
je 0x7ff9c51e7f75
cmp edx, 1
jne 0x7ff9c51e7f80
add qword [r9 + r11], r8
jmp 0x7ff9c51e7f79
add dword [r9 + r11], r8d
mov rcx, qword [0x7ff9c51fd7a0]
inc r10
mov eax, ecx
cmp r10, rax
jb 0x7ff9c51e7f12
mov r14, qword [rsp + 0xd0]
mov eax, dword [0x7ff9c51fd850]
call fcn.7ff9c51dc260
lea r10, [r12 + r15]
mov qword [r14 + 0x10], r10
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret