Function at 0x140028a70
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
movabs rax, 0x800000000000001
cmp rdx, rax
jae 0x140028d8f
mov rbx, rcx
dec rdx
or rdx, 1
bsr rcx, rdx
xor ecx, 0x3f
neg cl
mov esi, 1
shl rsi, cl
lea rax, [rbx + 0x18]
mov r15, qword [rbx + 8]
mov edx, 2
shl rdx, cl
mov rcx, rax
mov r8, r15
call fcn.140028da0
lea rax, [rsi - 1]
mov qword [rbx + 0x30], rax
mov qword [rbx + 0x38], rsi
mov rax, qword [rbx + 8]
mov r9, qword [rax]
cmp r9, r15
je 0x140028d7e
lea rbp, [rsp + 0x24]
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x30], r15
jmp 0x140028b16
mov qword [rax + rcx*8], r13
mov qword [rax + r8*8], r13
mov r9, qword [rsp + 0x28]
cmp r9, r15
je 0x140028d7e
mov r13, r9
lea rsi, [r9 + 0x10]
cmp qword [r9 + 0x28], 0x10
mov qword [rsp + 0x50], rsi
jb 0x140028b2d
mov rsi, qword [r13 + 0x10]
mov rax, qword [r13]
mov qword [rsp + 0x28], rax
mov r14, qword [r13 + 0x20]
test r14, r14
je 0x140028b90
xor r12d, r12d
xor edi, edi
nop word cs:[rax + rax]
movsx ecx, byte [rsi + r12]
call fcn.1400e5d90
mov dword [rsp + 0x24], eax
mov rcx, rbp
call fcn.140028a10
mov rcx, rdi
shl rcx, 6
mov rdx, rdi
shr rdx, 2
add rdx, rcx
add rdx, rax
mov eax, 0x9e3779b9
add rdx, rax
xor rdi, rdx
inc r12
cmp r14, r12
jne 0x140028b50
jmp 0x140028b92
xor edi, edi
and rdi, qword [rbx + 0x30]
mov rax, qword [rbx + 0x18]
lea rcx, [rdi + rdi]
lea r8, [rdi*2 + 1]
shl rdi, 4
mov rdx, qword [rax + rdi]
mov qword [rsp + 0x40], rdx
cmp rdx, r15
je 0x140028b00
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x60], r8
mov r12, qword [rax + r8*8]
mov rdi, qword [r13 + 0x20]
cmp rdi, qword [r12 + 0x20]
jne 0x140028c90
cmp qword [r13 + 0x28], 0x10
mov rsi, qword [rsp + 0x50]
jb 0x140028bee
mov rsi, qword [r13 + 0x10]
test rdi, rdi
je 0x140028c3a
cmp qword [r12 + 0x28], 0x10
jb 0x140028c02
mov r15, qword [r12 + 0x10]
jmp 0x140028c07
lea r15, [r12 + 0x10]
xor ebx, ebx
nop dword [rax]
movsx ebp, byte [r15 + rbx]
movsx ecx, byte [rsi + rbx]
call fcn.1400e5d90
mov r14d, eax
mov ecx, ebp
lea rbp, [rsp + 0x24]
call fcn.1400e5d90
cmp r14d, eax
jne 0x140028c90
inc rbx
cmp rdi, rbx
jne 0x140028c10
mov rax, qword [r12]
cmp rax, r13
mov r15, qword [rsp + 0x30]
mov r9, qword [rsp + 0x28]
je 0x140028c6e
mov rcx, qword [r13 + 8]
mov qword [rcx], r9
mov rdx, qword [r9 + 8]
mov qword [rdx], rax
mov r8, qword [rax + 8]
mov qword [r8], r13
mov qword [rax + 8], rdx
mov qword [r9 + 8], rcx
mov qword [r13 + 8], r8
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x60]
mov qword [rax + rcx*8], r13
mov rbx, qword [rsp + 0x38]
jmp 0x140028b0d
cmp qword [rsp + 0x40], r12
je 0x140028d36
mov r12, qword [r12 + 8]
cmp rdi, qword [r12 + 0x20]
jne 0x140028c90
cmp qword [r13 + 0x28], 0x10
mov rsi, qword [rsp + 0x50]
jb 0x140028cb7
mov rsi, qword [r13 + 0x10]
test rdi, rdi
je 0x140028d0a
cmp qword [r12 + 0x28], 0x10
jb 0x140028cd0
mov r15, qword [r12 + 0x10]
jmp 0x140028cd5
lea r15, [r12 + 0x10]
xor ebx, ebx
nop word [rax + rax]
movsx ebp, byte [r15 + rbx]
movsx ecx, byte [rsi + rbx]
call fcn.1400e5d90
mov r14d, eax
mov ecx, ebp
lea rbp, [rsp + 0x24]
call fcn.1400e5d90
cmp r14d, eax
jne 0x140028c90
inc rbx
cmp rdi, rbx
jne 0x140028ce0
mov rax, qword [r12]
mov rcx, qword [r13 + 8]
mov r9, qword [rsp + 0x28]
mov qword [rcx], r9
mov rdx, qword [r9 + 8]
mov qword [rdx], rax
mov r8, qword [rax + 8]
mov qword [r8], r13
mov qword [rax + 8], rdx
mov qword [r9 + 8], rcx
mov qword [r13 + 8], r8
jmp 0x140028d6f
mov rax, qword [r13 + 8]
mov r9, qword [rsp + 0x28]
mov qword [rax], r9
mov rcx, qword [r9 + 8]
mov r8, qword [rsp + 0x40]
mov qword [rcx], r8
mov rdx, qword [r8 + 8]
mov qword [rdx], r13
mov qword [r8 + 8], rcx
mov qword [r9 + 8], rax
mov qword [r13 + 8], rdx
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x58]
mov qword [rax + rcx*8], r13
mov rbx, qword [rsp + 0x38]
mov r15, qword [rsp + 0x30]
jmp 0x140028b0d
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, str.invalid_hash_bucket_count
call fcn.1400578c4
int3