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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
mov eax, 0x1468
call fcn.140034c50
sub rsp, rax
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x13e0], 0xfffffffffffffffe
mov qword [rbp + 0x1360], r9
mov qword [rbp + 0x1368], r8
mov qword [rbp + 0x1370], rdx
mov rsi, rcx
mov ebx, dword [rbp + 0x1468]
lea eax, [rbx + 0xf]
lea ecx, [rbx - 0xf]
mov r14d, 0x80000000
mov edx, ecx
or edx, r14d
lea r8d, [rbx + 0x7ffffff1]
test ecx, ecx
cmovns r8d, edx
mov ecx, eax
or ecx, r14d
add ebx, 0x8000000f
test eax, eax
cmovns ebx, ecx
mov dword [rbp + 0x13b0], r8d
sub ebx, r8d
mov eax, ebx
not eax
mov dword [rbp + 0x13b4], eax
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea r15, [rax + 0x145]
lea rax, [rax + 0x155]
mov qword [rbp + 0x1388], rax
lea r12d, [rbx + 1]
mov r13d, 3
mov qword [rbp + 0x13c0], rsi
mov qword [rbp + 0x1378], rbx
mov qword [rbp + 0x1380], r15
mov qword [rbp + 0x1390], r12
test r13d, r13d
jle 0x14000e903
mov rdi, qword [rbp + 0x1458]
mov qword [rsp + 0x30], rdi
mov eax, dword [rbp + 0x1460]
mov dword [rsp + 0x28], eax
mov rax, qword [rbp + 0x1450]
mov qword [rsp + 0x20], rax
mov rcx, rsi
mov rdx, qword [rbp + 0x1370]
mov r8, qword [rbp + 0x1368]
mov r9, qword [rbp + 0x1360]
call fcn.14000ef9a
cmp byte [rdi], 0
jne 0x14000e99a
call fcn.14002dae0
lea rsi, [rbp - 0x48]
movabs rdi, 0xdfafb5419f490ddb
mov rcx, rsi
mov edx, eax
call fcn.14000ddb8
mov rcx, rsi
cmp ebx, 0xffffffff
je 0x14000e53b
call fcn.14000ddf8
mov ecx, eax
imul rcx, r12
cmp ebx, ecx
jb 0x14000e535
mov eax, dword [rbp + 0x13b4]
xor edx, edx
div r12d
cmp edx, ecx
jbe 0x14000e535
mov eax, dword [rbp + 0x133c]
mov r8d, dword [rbp - 0x48]
cmp r8d, 0x270
jne 0x14000e3f9
mov rcx, 0xfffffffffffff640
mov r8d, dword [rbp + rcx + 0x97c]
and r8d, r14d
mov r9d, dword [rbp + rcx + 0x980]
mov r10d, r9d
and r10d, 0x7ffffffe
or r10d, r8d
and r9d, 1
neg r9d
and r9d, 0x9908b0df
xor r9d, dword [rbp + rcx + 0xfb0]
shr r10d, 1
xor r9d, r10d
mov dword [rbp + rcx + 0x133c], r9d
add rcx, 4
jne 0x14000e3a4
mov r8d, 0x270
jmp 0x14000e4e5
cmp r8d, 0x4e0
jb 0x14000e4e5
mov rcx, 0xfffffffffffffc74
mov r8d, dword [rbp + rcx + 0xd08]
and r8d, r14d
mov r9d, dword [rbp + rcx + 0xd0c]
mov r10d, r9d
and r10d, 0x7ffffffe
or r10d, r8d
and r9d, 1
neg r9d
and r9d, 0x9908b0df
xor r9d, dword [rbp + rcx + 0x133c]
shr r10d, 1
xor r9d, r10d
mov dword [rbp + rcx + 0x348], r9d
add rcx, 4
jne 0x14000e40d
xor ecx, ecx
mov r8d, dword [rbp + rcx*4 + 0xd08]
and r8d, r14d
mov r9d, dword [rbp + rcx*4 + 0xd0c]
mov r10d, r9d
and r10d, 0x7ffffffe
or r10d, r8d
shr r10d, 1
and r9d, 1
neg r9d
and r9d, 0x9908b0df
xor r9d, dword [rbp + rcx*4 - 0x44]
xor r9d, r10d
mov dword [rbp + rcx*4 + 0x348], r9d
inc rcx
cmp rcx, 0x18c
jne 0x14000e459
mov ecx, dword [rbp + 0x1338]
and ecx, r14d
mov r8d, dword [rbp - 0x44]
mov r9d, r8d
and r9d, 0x7ffffffe
or r9d, ecx
and r8d, 1
neg r8d
and r8d, 0x9908b0df
xor r8d, dword [rbp + 0x5ec]
shr r9d, 1
xor r8d, r9d
mov dword [rbp + 0x978], r8d
xor r8d, r8d
mov ecx, r8d
inc r8d
mov ecx, dword [rbp + rcx*4 - 0x44]
mov r9d, ecx
shr r9d, 0xb
and r9d, eax
xor r9d, ecx
mov ecx, r9d
shl ecx, 7
and ecx, 0x9d2c5680
xor ecx, r9d
mov r9d, ecx
shl r9d, 0xf
and r9d, 0xefc60000
xor r9d, ecx
mov ecx, r9d
shr ecx, 0x12
xor ecx, r9d
imul rcx, r12
cmp edx, ecx
ja 0x14000e394
mov dword [rbp - 0x48], r8d
shr rcx, 0x20
jmp 0x14000e542
call fcn.14000ddf8
mov ecx, eax
add ecx, dword [rbp + 0x13b0]
mov eax, ecx
or eax, r14d
mov esi, ecx
xor esi, r14d
test ecx, ecx
cmovns esi, eax
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x154], 0
je 0x14000e861
cmp byte [r15 + 0xd], 0
je 0x14000e5a3
mov rax, r15
xor edx, edx
mov ecx, edx
and cl, 0x38
mov r8, rdi
shr r8, cl
xor byte [rax], r8b
add rdx, 8
inc rax
cmp rdx, 0x68
jne 0x14000e583
mov byte [r15 + 0xd], 0
lea rcx, [0x1400f76f0]
mov rdx, r15
call fcn.14000ec61
mov rbx, rax
lea rcx, [rbp + 0x13c8]
mov rdx, rax
call fcn.140009532
mov dword [rbp + 0x13d8], esi
cmp byte [rbp + 0x13d0], 0
mov qword [rbp + 0x13b8], rbx
mov dword [rbp + 0x13ac], r13d
je 0x14000e678
mov rax, qword [rbx]
movsxd rax, dword [rax + 4]
mov rax, qword [rbx + rax + 0x40]
mov rcx, qword [rax + 8]
mov qword [rbp + 0x13a0], rcx
mov rax, qword [rcx]
call qword [rax + 8]
lea rdi, [rbp + 0x1398]
mov rcx, rdi
call fcn.1400124ba
mov rsi, rax
mov rcx, rdi
call fcn.1400094aa
mov rax, qword [rbx]
movsxd rax, dword [rax + 4]
lea r9, [rbx + rax]
mov cl, byte [rbx + rax + 0x58]
mov rax, qword [rbx + rax + 0x48]
mov byte [rbp + 0x1350], 0
mov qword [rbp + 0x1358], rax
mov rax, qword [rsi]
mov rax, qword [rax + 0x48]
mov edx, dword [rbp + 0x13d8]
mov dword [rsp + 0x28], edx
mov byte [rsp + 0x20], cl
mov rcx, rsi
lea rdx, [rbp + 0x1340]
lea r8, [rbp + 0x1350]
call rax
movzx eax, byte [rbp + 0x1340]
shl eax, 2
mov dword [rbp + 0x13dc], eax
jmp 0x14000e682
mov dword [rbp + 0x13dc], 0
mov rcx, qword [rbp + 0x13b8]
mov rax, qword [rcx]
movsxd rax, dword [rax + 4]
add rcx, rax
mov edx, dword [rbp + 0x13dc]
xor r8d, r8d
call fcn.1400094de
lea rcx, [rbp + 0x13c8]
call fcn.1400098e0
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x174], 0
mov rbx, qword [rbp + 0x1378]
mov r14d, 0x80000000
mov r15, qword [rbp + 0x1380]
mov r12, qword [rbp + 0x1390]
mov r13d, dword [rbp + 0x13ac]
je 0x14000e8b5
mov rdx, qword [rbp + 0x1388]
cmp byte [rdx + 0x1c], 0
movabs r10, 0xdfafb5419f490ddb
mov esi, dword [rbp + 0x13d8]
je 0x14000e735
mov rax, rdx
xor r9d, r9d
mov ecx, r9d
and cl, 0x38
mov r8, r10
shr r8, cl
xor byte [rax], r8b
add r9, 8
inc rax
cmp r9, 0xe0
jne 0x14000e712
mov byte [rdx + 0x1c], 0
mov rcx, qword [rbp + 0x13b8]
call fcn.14000ec61
mov rcx, rax
call fcn.14000ee45
lea rcx, [rbp + 0x13c8]
call fcn.14001263c
mov rdi, qword [rbp + 0x13c8]
test esi, esi
jle 0x14000e78a
mov eax, esi
imul rcx, rax, 0xffffffffc4653600
movabs rdx, 0x7fffffffffffffff
add rcx, rdx
imul rax, rax, 0x3b9aca00
add rax, rdi
cmp rdi, rcx
cmovge rax, rdx
mov rdi, rax
lea rcx, [rbp + 0x1398]
dec r13d
call fcn.14001263c
mov rsi, rdi
sub rsi, qword [rbp + 0x1398]
jle 0x14000e80a
call fcn.14002fe50
imul rax, rax, 0x64
movabs rcx, 0x311cdad160000
cmp rsi, rcx
cmovge rsi, rcx
add rsi, rax
mov rax, rsi
movabs rcx, 0x112e0be826d694b3
imul rcx
mov rax, rdx
shr rax, 0x3f
sar rdx, 0x1a
add rdx, rax
mov qword [rbp + 0x13c8], rdx
imul eax, edx, 0xc4653600
add esi, eax
mov dword [rbp + 0x13d0], esi
lea rcx, [rbp + 0x13c8]
call fcn.14002ff04
lea rcx, [rbp + 0x1398]
jmp 0x14000e794
mov rsi, qword [rbp + 0x13c0]
mov rcx, qword [rsi]
test rcx, rcx
je 0x14000e2ea
mov rdx, qword [rsi + 0x10]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x14000e849
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x14000eafd
add rdx, 0x27
mov rcx, rax
call fcn.140028960
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], 0
jmp 0x14000e2ea
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov cl, 1
mov byte [rax + 0x154], cl
mov byte [rax + 0x152], cl
movabs rcx, 0xffc8db28eb206c8c
mov qword [rax + 0x145], rcx
movabs rcx, 0x41bf3b62bdffc8db
mov qword [rax + 0x14a], rcx
lea rcx, [0x140012493]
call fcn.140028cd4
jmp 0x14000e577
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov cl, 1
mov byte [rax + 0x174], cl
mov byte [rax + 0x171], cl
movups xmm0, xmmword [0x1400dd8b6]
movups xmmword [rax + 0x155], xmm0
movups xmm0, xmmword [0x1400dd8c2]
movups xmmword [rax + 0x161], xmm0
lea rcx, [0x140012615]
call fcn.140028cd4
jmp 0x14000e6ef
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x134], 0
je 0x14000ea37
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rdx, [rax + 0x120]
cmp byte [rdx + 0x13], 0
je 0x14000e973
xor eax, eax
movabs r8, 0x3b7577db115f355b
mov r9, rdx
mov ecx, eax
and cl, 0x38
mov r10, r8
shr r10, cl
xor byte [r9], r10b
add rax, 8
inc r9
cmp rax, 0x98
jne 0x14000e952
mov byte [rdx + 0x13], 0
lea rcx, [0x1400f76f0]
call fcn.14000ec61
mov rcx, rax
call fcn.14000ee45
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], 0
jmp 0x14000ea1c
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x144], 0
je 0x14000ea9a
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rdx, [rax + 0x135]
cmp byte [rdx + 0xb], 0
je 0x14000ea08
xor eax, eax
movabs r8, 0xedbd9b35dd55518f
mov r9, rdx
mov ecx, eax
and cl, 0x38
mov r10, r8
shr r10, cl
xor byte [r9], r10b
add rax, 8
inc r9
cmp rax, 0x58
jne 0x14000e9e9
mov byte [rdx + 0xb], 0
lea rcx, [0x1400f76f0]
call fcn.14000ec61
mov rcx, rax
call fcn.14000ee45
mov rax, qword [rbp + 0x13c0]
add rsp, 0x1468
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov cl, 1
mov byte [rax + 0x134], cl
mov byte [rax + 0x133], cl
xor eax, eax
lea rcx, [0x1400dd898]
mov dl, byte [rax + rcx]
mov r8d, dword [0x1400f8c60]
mov r9, qword gs:[0x58]
mov r8, qword [r9 + r8*8]
mov byte [r8 + rax + 0x120], dl
inc rax
cmp rax, 0x13
jne 0x14000ea61
lea rcx, [0x14000ec3a]
call fcn.140028cd4
jmp 0x14000e923
mov eax, dword [0x1400f8c60]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov cl, 1
mov byte [rax + 0x144], cl
mov byte [rax + 0x140], cl
xor eax, eax
lea rcx, [0x1400dd8ab]
mov dl, byte [rax + rcx]
mov r8d, dword [0x1400f8c60]
mov r9, qword gs:[0x58]
mov r8, qword [r9 + r8*8]
mov byte [r8 + rax + 0x135], dl
inc rax
cmp rax, 0xb
jne 0x14000eac4
lea rcx, [0x14001246c]
call fcn.140028cd4
jmp 0x14000e9ba
call fcn.1400a3978
int3