Function at 0x140088a90
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push r12
sub rsp, 0x58
sub r9, r8
mov qword [rsp + 0x70], rdx
mov r12, r8
mov rbx, rdx
cmp r9, 0xffffffffffffffff
jne 0x140088ac5
lea rcx, [rsp + 0x70]
call fcn.140088da0
add rax, r12
add rsp, 0x58
pop r12
pop rbx
ret
mov qword [rsp + 0x80], rsi
mov eax, 0xffffffff
mov qword [rsp + 0x88], rdi
mov esi, eax
mov qword [rsp + 0x48], r14
lea r14, [r9 + 1]
mov edi, 1
cmp rax, r9
jae 0x140088afe
nop
shl rsi, 0x20
inc edi
or rsi, rax
cmp rsi, r9
jb 0x140088af0
mov r9d, edi
mov qword [rsp + 0x40], r15
mov r8, r14
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x70]
call fcn.140088f50
mov r8, qword [rsp + 0x20]
mov rcx, r8
and rcx, rsi
cmp rcx, r14
jae 0x140088d2d
xor edx, edx
mov rax, rsi
sub rax, r14
inc rax
div r14
mov r15, rdx
cmp rcx, rdx
jae 0x140088d2d
mov qword [rsp + 0x78], rbp
mov qword [rsp + 0x50], r13
lea r13d, [rdi - 1]
lea rcx, [rsp + 0x70]
call fcn.140089160
mov rdi, rax
mov ebp, r13d
test r13d, r13d
je 0x140088cff
nop dword [rax]
mov edx, dword [rbx]
shl rdi, 0x20
cmp edx, 0x270
jne 0x140088bd2
lea rcx, [rbx + 8]
mov r9d, edx
nop word [rax + rax]
mov r8d, dword [rcx - 4]
xor r8d, dword [rcx]
lea rcx, [rcx + 4]
btr r8d, 0x1f
xor r8d, dword [rcx - 8]
mov eax, r8d
and al, 1
neg al
sbb edx, edx
shr r8d, 1
and edx, 0x9908b0df
xor edx, dword [rcx + 0x62c]
xor edx, r8d
mov dword [rcx + 0x9b8], edx
sub r9, 1
jne 0x140088b90
mov edx, dword [rbx]
jmp 0x140088cb3
cmp edx, 0x4e0
jb 0x140088cb3
lea r9, [rbx + 0x9c4]
mov r10d, 0xe3
mov r11d, dword [r9]
nop
mov eax, r11d
mov r8, r9
mov r11d, dword [r9 + 4]
add r9, 4
mov edx, r11d
xor edx, eax
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x634]
xor ecx, edx
mov dword [r8 - 0x9c0], ecx
sub r10, 1
jne 0x140088bf0
lea r9, [rbx + 0xd50]
mov r10d, 0x18c
mov r11d, dword [r9]
nop
mov eax, r11d
mov r8, r9
mov r11d, dword [r9 + 4]
mov edx, eax
xor edx, r11d
add r9, 4
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r8 - 0xd4c]
xor ecx, edx
mov dword [r8 - 0x9c0], ecx
sub r10, 1
jne 0x140088c40
mov eax, dword [rbx + 0x1380]
mov edx, eax
xor edx, dword [rbx + 4]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [rbx + 0x634]
mov dword [rbx + 0x9c0], ecx
xor edx, edx
mov dword [rbx], r10d
mov eax, edx
mov ecx, dword [rbx + rax*4 + 4]
lea eax, [rdx + 1]
mov dword [rbx], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [rbx + 0x1384]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and ecx, 0xffffdf8c
shl ecx, 0xf
xor rcx, rax
mov rax, rcx
shr rax, 0x12
xor rax, rcx
or rdi, rax
mov eax, 0xffffffff
add ebp, eax
jne 0x140088b70
mov rax, r14
mul rdi
mov rcx, rax
mov qword [rsp + 0x20], rax
and rcx, rsi
mov qword [rsp + 0x28], rdx
mov r8, rax
cmp rcx, r15
jb 0x140088b54
mov r13, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x78]
jmp 0x140088d32
mov rdx, qword [rsp + 0x28]
vmovups xmm0, xmmword [rsp + 0x20]
mov r15, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x88]
popcnt rcx, rsi
mov rsi, qword [rsp + 0x80]
mov ecx, ecx
vmovdqa xmmword [rsp + 0x20], xmm0
test cl, cl
je 0x140088d8f
cmp cl, 0x40
jb 0x140088d7f
movzx eax, cl
and eax, 0x3f
shrx r8, rdx, rax
lea rax, [r8 + r12]
add rsp, 0x58
pop r12
pop rbx
ret
shrd r8, rdx, cl
lea rax, [r8 + r12]
add rsp, 0x58
pop r12
pop rbx
ret
mov r8, qword [rsp + 0x20]
lea rax, [r8 + r12]
add rsp, 0x58
pop r12
pop rbx
ret