Function at 0x140087aa0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov eax, edx
mov ebx, edx
cdq
mov rdi, r8
and edx, 3
mov r10, rcx
add eax, edx
mov r9d, eax
and eax, 3
sar r9d, 2
sub eax, edx
movsxd r11, r9d
test r9d, r9d
jle 0x140087af0
mov rdx, r8
sub r10, r8
mov r8, r11
nop dword [rax]
mov ecx, dword [r10 + rdx]
mov dword [rdx], ecx
lea rdx, [rdx + 4]
sub r8, 1
jne 0x140087ae0
cmp ebx, 0x20
jge 0x140087b07
mov ecx, dword [rdi + r11*4]
lea eax, [rax*8]
bts ecx, eax
mov dword [rdi + r11*4], ecx
mov eax, dword [rdi + 0x1c]
lea rdx, [rdi + 0xc]
xor r8d, r8d
mov ecx, dword [rdx - 0xc]
xor ecx, dword [rdx + 8]
xor ecx, dword [rdx]
lea rdx, [rdx + 4]
xor eax, ecx
xor eax, r8d
inc r8d
xor eax, 0x9e3779b9
rol eax, 0xb
mov dword [rdx + 0x10], eax
cmp r8d, 0x84
jl 0x140087b11
sub rdi, 0x30
mov esi, 4
nop dword [rax]
nop word [rax + rax]
mov r11d, dword [rdi + 0x60]
lea rbx, [rdi + 0x80]
mov r10d, dword [rdi + 0x50]
mov r8d, r10d
mov edx, dword [rdi + 0x5c]
or r10d, edx
mov eax, dword [rdi + 0x54]
xor edx, eax
mov r9d, dword [rdi + 0x58]
and eax, r8d
xor r8d, r9d
xor r9d, edx
or r8d, eax
and edx, r10d
xor r10d, eax
xor edx, r8d
and r8d, r10d
mov dword [rdi + 0x58], edx
xor r8d, r9d
mov ecx, edx
xor ecx, eax
mov dword [rdi + 0x5c], r8d
or ecx, r10d
mov eax, edx
xor ecx, r9d
mov r8d, r11d
or r8d, dword [rdi + 0x6c]
or eax, ecx
xor r8d, dword [rdi + 0x64]
xor eax, edx
mov edx, dword [rdi + 0x78]
xor eax, r10d
mov r10d, dword [rdi + 0x68]
not edx
mov dword [rdi + 0x50], eax
mov r9d, r11d
and r9d, r10d
mov dword [rdi + 0x54], ecx
xor r9d, dword [rdi + 0x6c]
mov eax, r9d
xor eax, dword [rdi + 0x64]
xor r10d, eax
xor r11d, r10d
mov dword [rdi + 0x60], r10d
mov r10d, dword [rdi + 0x74]
mov ecx, r11d
or ecx, r8d
xor ecx, r9d
and r9d, r8d
xor r11d, r9d
mov dword [rdi + 0x64], ecx
mov r9d, dword [rdi + 0x70]
mov eax, r11d
xor eax, r8d
not r9d
mov r8d, dword [rdi + 0x7c]
xor eax, ecx
mov ecx, r9d
mov dword [rdi + 0x68], eax
and r9d, r10d
not r11d
xor edx, r9d
mov dword [rdi + 0x6c], r11d
or r9d, r8d
xor r8d, edx
xor r10d, r9d
mov dword [rdi + 0x78], r8d
xor r9d, ecx
or ecx, r10d
or edx, r9d
xor r10d, r8d
and edx, ecx
xor r9d, r10d
mov eax, edx
mov dword [rdi + 0x70], edx
and eax, r9d
and edx, r10d
xor eax, ecx
xor edx, r9d
mov dword [rdi + 0x74], eax
mov dword [rdi + 0x7c], edx
mov ecx, dword [rbx]
mov r11d, dword [rdi + 0x88]
mov r9d, r11d
mov eax, dword [rdi + 0x84]
xor r9d, eax
mov r10d, dword [rdi + 0x8c]
xor r10d, ecx
mov r8d, r10d
mov edx, r10d
and edx, eax
or r8d, ecx
xor edx, ecx
xor r8d, r9d
xor r9d, r10d
mov dword [rdi + 0x8c], r8d
xor r10d, r11d
or r11d, edx
mov ecx, r10d
xor r11d, r9d
xor ecx, edx
mov dword [rdi + 0x88], r11d
or r10d, r8d
not r9d
or r9d, edx
mov eax, r10d
xor r10d, r9d
xor ecx, r9d
mov dword [rdi + 0x84], r10d
xor eax, ecx
mov dword [rbx], eax
lea rdi, [rbx]
mov r9d, dword [rbx + 0x14]
mov edx, r9d
mov ecx, dword [rbx + 0x18]
and edx, ecx
mov r10d, dword [rbx + 0x1c]
xor edx, r10d
xor ecx, edx
and r10d, r9d
xor edx, r9d
mov r8d, ecx
xor r9d, dword [rbx + 0x10]
or r8d, dword [rbx + 0x10]
xor r10d, r9d
xor r8d, edx
xor edx, r10d
and r10d, r8d
mov dword [rbx + 0x1c], r8d
xor r10d, ecx
mov eax, edx
xor eax, ecx
mov dword [rbx + 0x18], r10d
mov ecx, dword [rbx + 0x24]
not eax
and edx, r8d
xor edx, eax
and eax, r8d
mov r8d, dword [rbx + 0x20]
xor eax, r9d
xor eax, r10d
mov dword [rbx + 0x10], edx
mov r10d, dword [rbx + 0x2c]
mov r9d, r10d
mov dword [rbx + 0x14], eax
and r10d, r8d
mov eax, dword [rbx + 0x28]
xor r8d, r9d
not eax
mov edx, r9d
xor r10d, eax
or edx, eax
xor ecx, r10d
xor edx, r8d
or r8d, ecx
xor edx, ecx
xor r9d, r8d
mov eax, r10d
or eax, r8d
xor r9d, r10d
xor eax, edx
xor r9d, eax
mov r8d, dword [rbx + 0x34]
not r10d
mov dword [rbx + 0x20], eax
mov dword [rbx + 0x28], r9d
and r9d, edx
mov edx, dword [rbx + 0x38]
xor r9d, r10d
mov r10d, dword [rbx + 0x4c]
mov dword [rbx + 0x2c], r9d
mov r9d, dword [rbx + 0x3c]
mov dword [rbx + 0x24], ecx
mov ecx, dword [rbx + 0x30]
xor ecx, r8d
xor r8d, r9d
not r9d
mov eax, ecx
and eax, r8d
xor edx, r9d
xor eax, edx
or edx, r8d
xor r8d, r9d
mov dword [rbx + 0x30], eax
and r9d, eax
xor r8d, edx
xor r8d, eax
xor r9d, ecx
xor edx, ecx
mov dword [rbx + 0x34], r9d
mov eax, r9d
not edx
and eax, ecx
or r9d, r8d
xor eax, r8d
xor r9d, edx
mov edx, dword [rbx + 0x44]
mov r8d, dword [rbx + 0x48]
xor edx, r10d
mov dword [rbx + 0x38], eax
not r10d
xor r8d, r10d
mov dword [rbx + 0x3c], r9d
mov r9d, dword [rbx + 0x40]
xor r10d, r9d
mov eax, r10d
and eax, edx
xor edx, r10d
xor eax, r8d
xor r9d, edx
mov ecx, eax
mov dword [rbx + 0x40], eax
and r8d, edx
or ecx, edx
xor r8d, r9d
and r9d, eax
xor r10d, r9d
xor ecx, r9d
mov eax, r10d
mov dword [rbx + 0x4c], r10d
and eax, r8d
xor eax, ecx
mov dword [rbx + 0x44], eax
mov eax, r10d
or eax, r9d
xor eax, r8d
not eax
mov dword [rbx + 0x48], eax
sub rsi, 1
jne 0x140087b50
mov r10d, dword [rbx + 0x50]
mov r8d, r10d
mov edx, dword [rbx + 0x5c]
or r10d, edx
mov eax, dword [rbx + 0x54]
xor edx, eax
mov r9d, dword [rbx + 0x58]
and eax, r8d
mov rsi, qword [rsp + 0x10]
xor r8d, r9d
mov rdi, qword [rsp + 0x18]
or r8d, eax
xor r9d, edx
and edx, r10d
xor edx, r8d
xor r10d, eax
mov ecx, edx
mov dword [rbx + 0x58], edx
xor ecx, eax
and r8d, r10d
or ecx, r10d
mov eax, edx
xor ecx, r9d
xor r8d, r9d
or eax, ecx
mov dword [rbx + 0x54], ecx
xor eax, edx
mov dword [rbx + 0x5c], r8d
xor eax, r10d
mov dword [rbx + 0x50], eax
mov rbx, qword [rsp + 8]
ret