Function at 0x180150ac0
Capabilities:
Generate random numbers using a mersenne twister

Disassembly:
push rdi
sub rsp, 0xd0
cmp byte [rcx + 4], 0
mov rdi, rcx
jne 0x180151080
movaps xmmword [rsp + 0x80], xmm8
call fcn.180153240
mov rax, qword [0x1803cd028]
xorps xmm8, xmm8
cmp byte [rax + 0xb4], 0
je 0x180150b36
cmp byte [rdi + 0xb6], 0
je 0x180150b36
movss xmm3, dword [rdi + 0x14]
lea rdx, [rdi + 0xac]
xorps xmm2, xmm2
mov rcx, rdi
call fcn.180153ce0
movss xmm3, dword [rdi + 0x14]
lea rdx, [rdi + 0xb0]
xorps xmm2, xmm2
mov rcx, rdi
call fcn.180153ce0
mov rax, qword [0x1803cd028]
cmp byte [rdi + 0x8c], 0
je 0x180151089
cmp byte [rax + 0xb6], 0
mov qword [rsp + 0xe0], rbx
jne 0x180150b91
movss xmm3, dword [rdi + 0x14]
lea rdx, [rdi + 0xac]
movss xmm2, dword [rdi + 0x90]
mov rcx, rdi
call fcn.180153ce0
movss xmm3, dword [rdi + 0x14]
lea rbx, [rdi + 0xb0]
movss xmm2, dword [rdi + 0x94]
mov rdx, rbx
mov rcx, rdi
call fcn.180153ce0
jmp 0x180150b98
lea rbx, [rdi + 0xb0]
mov eax, dword [rbx]
mov rcx, rdi
mov dword [rdi + 0x628], eax
call fcn.180261dd0
mov rax, qword [rdi + 0x650]
cmp qword [rdi + 0x648], rax
je 0x18015106f
mov qword [rsp + 0xf0], rsi
mov rsi, qword [rax - 8]
mov qword [rsp + 0xc0], r13
mov rcx, rsi
movaps xmmword [rsp + 0x90], xmm7
movaps xmmword [rsp + 0x70], xmm9
mov rax, qword [rsi]
movaps xmmword [rsp + 0x60], xmm10
call qword [rax + 0x20]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x18]
mov rdx, rsi
mov rcx, rdi
call fcn.180264210
mov rax, qword [rsi]
mov rcx, rsi
movsxd rbx, dword [rdi + 0x9c]
call qword [rax + 0x30]
cmp rax, rbx
ja 0x180150c22
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
mov rbx, rax
xorps xmm2, xmm2
test rbx, rbx
js 0x180150c31
cvtsi2ss xmm2, rbx
jmp 0x180150c46
mov rax, rbx
and ebx, 1
shr rax, 1
or rax, rbx
cvtsi2ss xmm2, rax
addss xmm2, xmm2
mulss xmm2, dword [rdi + 0x1f8]
movss xmm4, dword [rdi + 0x10]
movss xmm9, dword [0x180298e70]
movss dword [rdi + 0x1c], xmm2
movss xmm3, dword [rdi + 0x20]
ucomiss xmm3, xmm2
jp 0x180150c6d
je 0x180150c8c
movaps xmm1, xmm9
movaps xmm0, xmm2
subss xmm1, xmm4
mulss xmm0, xmm4
mulss xmm1, xmm3
movaps xmm3, xmm1
addss xmm3, xmm0
movss dword [rdi + 0x20], xmm3
movsd xmm7, qword [0x1802aea70]
cvtps2pd xmm1, xmm2
cvtps2pd xmm4, xmm3
movaps xmm0, xmm1
subsd xmm0, xmm7
comisd xmm4, xmm0
jbe 0x180150cb6
addsd xmm1, xmm7
comisd xmm1, xmm4
jbe 0x180150cb6
movss dword [rdi + 0x20], xmm2
call fcn.180178720
movss xmm1, dword [rdi + 0x20]
xor r13d, r13d
movups xmm0, xmmword [rdi + 0x298]
mov dword [rsp + 0x40], r13d
mov rcx, rdi
movss xmm10, dword [0x1802a50d4]
movaps xmm2, xmm1
movss xmm3, dword [rdi + 0x98]
movss dword [rsp + 0x38], xmm8
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
mulss xmm2, xmm10
mov qword [rsp + 0x28], rax
movss dword [rsp + 0x20], xmm1
movss xmm1, dword [rdi + 0xac]
addss xmm2, dword [rdi + 0x628]
movaps xmmword [rsp + 0x50], xmm0
call fcn.1801522b0
cmp byte [rdi + 0x538], r13b
je 0x180150d35
mov rdx, rsi
mov rcx, rdi
call fcn.180263ee0
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
test rax, rax
je 0x180150ff2
mov rax, qword [rsi]
mov rcx, rsi
mov qword [rsp + 0xe8], rbp
mov rbp, r13
mov qword [rsp + 0xc8], r12
movsxd r12, dword [rdi + 0x9c]
call qword [rax + 0x30]
cmp rax, r12
ja 0x180150d7b
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
mov r12, rax
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x30]
movsxd rcx, dword [rdi + 0x9c]
cmp rax, rcx
jbe 0x180150e29
mov rdx, qword [rsi]
mov rcx, rsi
call qword [rdx + 0x40]
mov ecx, dword [rdi + 0x9c]
sub ecx, 6
movsxd rcx, ecx
cmp rax, rcx
jb 0x180150e29
mov qword [rsp + 0xb8], r14
mov r14, r13
mov qword [rsp + 0xb0], r15
mov r15d, 6
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
mov rdx, qword [rsi]
mov rcx, rsi
mov rbx, rax
sub rbx, r14
call qword [rdx + 0x40]
cmp rax, rbx
jae 0x180150e10
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x40]
movsxd rcx, dword [rdi + 0x9c]
mov rbp, r14
sub rbp, rcx
inc rax
add rbp, rax
mov rcx, rsi
mov rax, qword [rsi]
call qword [rax + 0x40]
lea r12, [rax + 1]
add r12, r14
inc r14
sub r15, 1
jne 0x180150dc7
mov r15, qword [rsp + 0xb0]
mov r14, qword [rsp + 0xb8]
cmp rbp, r12
jae 0x180150fe2
movaps xmmword [rsp + 0xa0], xmm6
nop word [rax + rax]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x40]
cmp rbp, rax
jne 0x180150f39
movss xmm2, dword [rdi + 0x1f8]
movss xmm3, dword [rdi + 0xa8]
movss xmm4, dword [rdi + 0x134]
mulss xmm2, xmm10
addss xmm2, dword [rdi + 0x628]
ucomiss xmm3, xmm2
jp 0x180150e7e
je 0x180150ea0
movaps xmm1, xmm9
movaps xmm0, xmm2
subss xmm1, xmm4
mulss xmm0, xmm4
mulss xmm1, xmm3
movaps xmm3, xmm1
addss xmm3, xmm0
movss dword [rdi + 0xa8], xmm3
cvtps2pd xmm1, xmm2
xorps xmm4, xmm4
movaps xmm0, xmm1
cvtss2sd xmm4, xmm3
subsd xmm0, xmm7
comisd xmm4, xmm0
jbe 0x180150ec9
addsd xmm1, xmm7
comisd xmm1, xmm4
jbe 0x180150ec9
movss dword [rdi + 0xa8], xmm2
cmp byte [rdi + 0x1e8], r13b
je 0x180150edc
movss xmm6, dword [rdi + 0x1ec]
jmp 0x180150ee0
movaps xmm6, xmm8
call fcn.180178720
movups xmm0, xmmword [rdi + 0x288]
mov rcx, rdi
mov dword [rsp + 0x40], r13d
movss xmm3, dword [rdi + 0x98]
movss xmm2, dword [rdi + 0xa8]
movss xmm1, dword [rdi + 0xac]
movss dword [rsp + 0x38], xmm6
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x50]
movaps xmmword [rsp + 0x50], xmm0
movss xmm0, dword [rdi + 0x1f8]
mov qword [rsp + 0x28], rax
movss dword [rsp + 0x20], xmm0
call fcn.1801522b0
xorps xmm1, xmm1
test rbp, rbp
js 0x180150f48
cvtsi2ss xmm1, rbp
jmp 0x180150f60
mov rax, rbp
mov rcx, rbp
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2ss xmm1, rcx
addss xmm1, xmm1
mulss xmm1, dword [rdi + 0x1f8]
movss xmm0, dword [rdi + 0x20]
comiss xmm0, xmm1
jae 0x180150fa1
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
movsxd rcx, dword [rdi + 0x9c]
cmp rax, rcx
jbe 0x180150fce
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x40]
mov ecx, dword [rdi + 0x9c]
sub ecx, 6
movsxd rcx, ecx
cmp rax, rcx
jb 0x180150fce
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x40]
mov rdx, rbp
mov rcx, rsi
cmp rbp, rax
mov rax, qword [rsi]
sete bl
call qword [rax + 0x28]
movzx r9d, bl
mov r8, rsi
mov rdx, rax
mov rcx, rdi
call fcn.180262260
inc rbp
cmp rbp, r12
jb 0x180150e40
movaps xmm6, xmmword [rsp + 0xa0]
mov r12, qword [rsp + 0xc8]
mov rbp, qword [rsp + 0xe8]
cmp byte [rdi + 0x4e8], 0
movaps xmm10, xmmword [rsp + 0x60]
movaps xmm9, xmmword [rsp + 0x70]
movaps xmm7, xmmword [rsp + 0x90]
mov r13, qword [rsp + 0xc0]
je 0x18015104e
cmp byte [rdi + 0x4e9], 0
je 0x180151046
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x30]
movsxd rcx, dword [rdi + 0x9c]
cmp rax, rcx
jbe 0x18015103d
mov rcx, rdi
call fcn.180261a10
cmp byte [rdi + 0x4e9], 0
jne 0x18015104e
mov rcx, rdi
call fcn.180261a10
mov rcx, rdi
call fcn.180261430
cmp byte [rdi + 0x593], 0
mov rsi, qword [rsp + 0xf0]
je 0x18015106f
mov rcx, rdi
call fcn.1802620e0
mov rbx, qword [rsp + 0xe0]
movaps xmm8, xmmword [rsp + 0x80]
add rsp, 0xd0
pop rdi
ret
mov rcx, rdi
movaps xmm8, xmmword [rsp + 0x80]
add rsp, 0xd0
pop rdi
jmp 0x180264620
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x13d0]
mov eax, 0x14d0
call fcn.180269ca0
sub rsp, rax
movaps xmmword [rsp + 0x14c0], xmm6
movaps xmmword [rsp + 0x14b0], xmm7
movaps xmmword [rsp + 0x14a0], xmm8
movaps xmmword [rsp + 0x1490], xmm9
mov rax, qword [0x1803d9938]
xor rax, rsp
mov qword [rbp + 0x1380], rax
mov rsi, rcx
xor r14d, r14d
mov dword [rsp + 0x70], r14d
cmp byte [rcx + 0x418], r14b
jne 0x180264a0a
cmp qword [rcx + 0x150], r14
jne 0x180264831
mov rax, qword [rcx + 0x160]
mov rdi, qword [rcx + 0x168]
cmp rax, rdi
jne 0x1802646f1
xorps xmm0, xmm0
movups xmmword [rsp + 0x78], xmm0
mov qword [rbp - 0x78], 8
mov qword [rbp - 0x70], 0xf
movabs rax, 0x21656d6f636c6557
mov qword [rsp + 0x78], rax
mov byte [rbp - 0x80], r14b
lea rax, [rsp + 0x78]
lea ebx, [r14 + 1]
jmp 0x180264787
sub rdi, rax
sar rdi, 5
call sub.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_
mov ecx, eax
mov dword [rbp + 0x1368], 0xffffffff
mov dword [rbp - 0x18], eax
mov ebx, 1
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, ebx
mov dword [rbp + rbx*4 - 0x18], ecx
inc rbx
cmp rbx, 0x270
jb 0x180264711
mov dword [rbp - 0x1c], 0x270
mov qword [rbp + 0x1370], r14
lea rax, [rdi - 1]
mov qword [rbp + 0x1378], rax
lea rax, [rbp - 0x1c]
mov qword [rsp + 0x60], rax
lea rcx, [rsp + 0x60]
test rdi, rdi
jne 0x180264763
call fcn.180260ee0
jmp 0x18026476b
mov rdx, rdi
call fcn.1802608d0
shl rax, 5
add rax, qword [rsi + 0x160]
mov rdx, rax
lea rcx, [rbp - 0x48]
call fcn.1800be2c0
mov ebx, 2
lea rcx, [rsi + 0x140]
mov rdx, rax
call fcn.180165380
test bl, 2
je 0x1802647ed
and ebx, 0xfffffffd
mov rdx, qword [rbp - 0x30]
cmp rdx, 0x10
jb 0x1802647dc
inc rdx
mov rcx, qword [rbp - 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1802647d7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1802647d7
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.18026980c
movdqa xmm0, xmmword [0x18029c040]
movdqu xmmword [rbp - 0x38], xmm0
mov byte [rbp - 0x48], 0
test bl, 1
je 0x180264831
mov rdx, qword [rbp - 0x70]
cmp rdx, 0x10
jb 0x180264831
inc rdx
mov rcx, qword [rsp + 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18026482c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x18026482c
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.18026980c
xorps xmm0, xmm0
movups xmmword [rbp - 0x68], xmm0
mov qword [rbp - 0x58], r14
mov qword [rbp - 0x50], r14
mov r8d, 0x11
lea rdx, str.Press_F4_to_open_
lea rcx, [rbp - 0x68]
call fcn.1800bdea0
nop
movups xmm6, xmmword [rsi + 0x188]
mov ebx, dword [rsi + 0x19c]
movss xmm7, dword [rsi + 0x1a4]
lea rdx, [rsi + 0x140]
lea rcx, [rbp - 0x48]
call fcn.1800be2c0
movaps xmmword [rsp + 0x60], xmm6
mov byte [rsp + 0x50], 0
movss xmm6, dword [0x1802a3020]
movss dword [rsp + 0x48], xmm6
mov byte [rsp + 0x40], 1
mov byte [rsp + 0x38], 0
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], ebx
movss dword [rsp + 0x20], xmm7
movss xmm3, dword [0x1802b6820]
movss xmm7, dword [0x1802a50d4]
movaps xmm2, xmm7
mov rdx, rax
mov rcx, rsi
call fcn.1801518f0
movups xmm8, xmmword [rsi + 0x178]
mov r13d, dword [rsi + 0x198]
movss xmm9, dword [rsi + 0x1a0]
xorps xmm0, xmm0
movups xmmword [rsp + 0x78], xmm0
mov qword [rbp - 0x78], r14
mov qword [rbp - 0x70], r14
lea r12, [rbp - 0x68]
mov rdi, qword [rbp - 0x68]
mov r15, qword [rbp - 0x50]
cmp r15, 0x10
cmovae r12, rdi
movabs rbx, 0x7fffffffffffffff
mov r14, qword [rbp - 0x58]
cmp r14, rbx
ja 0x180264a4e
mov qword [rbp - 0x70], 0xf
cmp r14, 0x10
jae 0x180264941
mov qword [rbp - 0x78], r14
movups xmm0, xmmword [r12]
movups xmmword [rsp + 0x78], xmm0
jmp 0x180264986
mov rax, r14
or rax, 0xf
cmp rax, rbx
ja 0x18026495c
mov rbx, rax
mov ecx, 0x16
cmp rax, rcx
cmovb rbx, rcx
lea rdx, [rbx + 1]
lea rcx, [rsp + 0x78]
call fcn.1800c14d0
mov qword [rsp + 0x78], rax
mov qword [rbp - 0x78], r14
mov qword [rbp - 0x70], rbx
lea r8, [r14 + 1]
mov rdx, r12
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
movaps xmmword [rsp + 0x60], xmm8
mov byte [rsp + 0x50], 0
movss dword [rsp + 0x48], xmm6
mov byte [rsp + 0x40], 1
mov byte [rsp + 0x38], 0
lea rax, [rsp + 0x60]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r13d
movss dword [rsp + 0x20], xmm9
movss xmm3, dword [0x1802f8c6c]
movaps xmm2, xmm7
lea rdx, [rsp + 0x78]
mov rcx, rsi
call fcn.1801518f0
nop
cmp r15, 0x10
jb 0x180264a0a
lea rdx, [r15 + 1]
mov rax, rdi
cmp rdx, 0x1000
jb 0x180264a02
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x180264a02
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, rdi
call fcn.18026980c
mov rcx, qword [rbp + 0x1380]
xor rcx, rsp
call fcn.180269d00
lea r11, [rsp + 0x14d0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1800c1490
nop
int3