Function at 0x140091510
Capabilities:
Encode data using xor
Hash data via bcrypt

Disassembly:
mov r11, rsp
push rbx
push rbp
push rsi
push r12
push r14
push r15
sub rsp, 0x98
mov rax, qword [0x140162010]
xor rax, rsp
mov qword [rsp + 0x78], rax
mov rax, qword [rsp + 0xf8]
mov r15d, r9d
movzx r12d, word [rsp + 0x100]
mov rbp, r8
mov qword [rsp + 0x38], rax
mov r14d, edx
mov rsi, rcx
test rcx, rcx
je 0x140091892
test r8, r8
je 0x140091892
test rax, rax
je 0x140091892
mov qword [r11 - 0x38], rdi
mov r8d, r12d
xor edx, edx
mov qword [r11 - 0x40], r13
mov rcx, rax
call fcn.1400d41f0
mov edx, 0x28
lea ecx, [rdx - 0x27]
call fcn.1400d8778
mov r13, rax
mov edi, 0x17
test rax, rax
je 0x1400915a2
mov word [rax + 0x24], di
mov edx, 0x28
lea ecx, [rdx - 0x27]
call fcn.1400d8778
mov qword [rsp + 0x40], rax
mov rbx, rax
test rax, rax
je 0x1400915c0
mov word [rax + 0x24], di
mov edx, 0x28
lea ecx, [rdx - 0x27]
call fcn.1400d8778
mov rdi, rax
test rax, rax
je 0x1400915de
mov eax, 0x17
mov word [rdi + 0x24], ax
test r13, r13
je 0x140091835
test rbx, rbx
je 0x140091835
test rdi, rdi
je 0x140091835
mov eax, 0x14
mov r8d, r14d
mov word [r13 + 0x24], ax
mov rdx, rsi
mov word [rbx + 0x24], ax
mov rcx, r13
mov word [rdi + 0x24], ax
call fcn.140092df0
mov ebx, eax
test eax, eax
jne 0x14009183f
mov rdx, rsi
mov r8d, r14d
mov rsi, qword [rsp + 0x40]
mov rcx, rsi
call fcn.140092df0
mov ebx, eax
test eax, eax
jne 0x14009183f
mov rcx, qword [rsi + 0x10]
test rcx, rcx
je 0x14009182e
xor r9d, r9d
mov r8d, r15d
mov rdx, rbp
call qword [sym.imp.bcrypt.dll_BCryptHashData]
test eax, eax
jns 0x14009166d
mov dword [rsi + 0x20], eax
mov ebx, 0xffffff92
jmp 0x14009183f
mov r14, qword [rsp + 0x38]
lea ecx, [r12 - 1]
xor eax, eax
movzx ebp, ax
mov ebx, eax
mov eax, 0x66666667
imul ecx
mov r15d, edx
sar r15d, 3
mov eax, r15d
shr eax, 0x1f
add r15d, eax
inc r15w
nop dword [rax]
cmp bp, r15w
jae 0x14009183f
xorps xmm0, xmm0
xor eax, eax
mov rdx, rdi
mov dword [rsp + 0x70], eax
mov rcx, rsi
movups xmmword [rsp + 0x60], xmm0
call fcn.140092f10
mov ebx, eax
test eax, eax
jne 0x14009183f
movzx ecx, bp
inc ecx
mov eax, ecx
shr eax, 0x18
mov byte [rsp + 0x48], al
mov eax, ecx
shr eax, 0x10
shr ecx, 8
xor ebx, ebx
mov byte [rsp + 0x49], al
lea eax, [rbp + 1]
mov byte [rsp + 0x4a], cl
mov byte [rsp + 0x4b], al
mov esi, ebx
lea r8d, [rbx + 4]
jmp 0x140091702
xor ebx, ebx
mov rcx, qword [rdi + 0x10]
test rcx, rcx
je 0x14009182e
xor r9d, r9d
lea rdx, [rsp + 0x48]
call qword [sym.imp.bcrypt.dll_BCryptHashData]
test eax, eax
js 0x140091824
mov rcx, qword [rdi + 0x10]
mov dword [rsp + 0x30], ebx
mov dword [rsp + 0x38], 4
test rcx, rcx
je 0x14009182e
lea rax, [rsp + 0x38]
mov dword [rsp + 0x28], ebx
mov r9d, 4
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x30]
lea rdx, str.HashDigestLength
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
test eax, eax
js 0x140091663
mov r8d, dword [rsp + 0x30]
cmp r8d, 0x14
jg 0x14009181d
mov rcx, qword [rdi + 0x10]
lea rdx, [rsp + 0x48]
xor r9d, r9d
call qword [sym.imp.bcrypt.dll_BCryptFinishHash]
test eax, eax
js 0x140091824
mov rax, rbx
mov edx, 0x14
nop dword [rax]
movzx ecx, byte [rsp + rax + 0x48]
xor byte [rsp + rax + 0x60], cl
lea rax, [rax + 1]
sub rdx, 1
jne 0x1400917a0
mov rdx, rdi
mov rcx, r13
call fcn.140092f10
mov ebx, eax
test eax, eax
jne 0x14009183f
inc esi
lea r8d, [rax + 0x14]
cmp esi, 0x3e8
jb 0x140091700
xor eax, eax
lea r9, [rsp + 0x60]
mov r8d, eax
movzx eax, bp
shl ax, 2
lea edx, [rax + rbp]
shl dx, 2
nop
cmp dx, r12w
jae 0x140091810
movzx eax, byte [r9]
inc r8d
movzx ecx, dx
inc r9
inc dx
mov byte [rcx + r14], al
cmp r8d, 0x14
jb 0x1400917f0
mov rsi, qword [rsp + 0x40]
inc bp
jmp 0x1400916a0
mov ebx, 0xfffffffb
jmp 0x14009183f
mov dword [rdi + 0x20], eax
mov ebx, 0xffffff92
jmp 0x14009183f
mov ebx, 0xffffff9a
jmp 0x14009183f
mov ebx, 0xfffffffc
test rdi, rdi
je 0x14009184f
mov rcx, rdi
call fcn.140092d90
mov rcx, rdi
call fcn.1400e3bf4
test r13, r13
je 0x140091864
mov rcx, r13
call fcn.140092d90
mov rcx, r13
call fcn.1400e3bf4
mov rdi, qword [rsp + 0x40]
mov r13, qword [rsp + 0x88]
test rdi, rdi
je 0x140091886
mov rcx, rdi
call fcn.140092d90
mov rcx, rdi
call fcn.1400e3bf4
mov rdi, qword [rsp + 0x90]
mov eax, ebx
jmp 0x140091897
mov eax, 0xffffff9a
mov rcx, qword [rsp + 0x78]
xor rcx, rsp
call fcn.1400ad9f0
add rsp, 0x98
pop r15
pop r14
pop r12
pop rsi
pop rbp
pop rbx
ret