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

Disassembly:
mov qword [rsp + 8], rcx
sub rsp, 0x178
mov rax, qword [0x140239e70]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x158], 0x26f
mov qword [rsp + 0x160], 0xe3
mov qword [rsp + 0x38], 0
jmp 0x14014cad8
mov rax, qword [rsp + 0x38]
inc rax
mov qword [rsp + 0x38], rax
cmp qword [rsp + 0x38], 0xe3
jae 0x14014cd32
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x38]
lea rcx, [rcx*4 + 0x9c0]
add rax, rcx
mov qword [rsp + 0xf0], rax
mov rax, qword [rsp + 0xf0]
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x88]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x20], al
cmp byte [rsp + 0x20], 0
je 0x14014cb5b
movzx eax, byte [rsp + 0x88]
and al, 7
add al, 3
cmp al, byte [rsp + 0x20]
jl 0x14014cb5b
mov rcx, qword [rsp + 0x88]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0xf0]
mov eax, dword [rax]
and eax, 0x80000000
mov dword [rsp + 0x60], eax
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x38]
lea rcx, [rcx*4 + 0x9c4]
add rax, rcx
mov qword [rsp + 0xf8], rax
mov rax, qword [rsp + 0xf8]
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0x90]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x21], al
cmp byte [rsp + 0x21], 0
je 0x14014cbe2
movzx eax, byte [rsp + 0x90]
and al, 7
add al, 3
cmp al, byte [rsp + 0x21]
jl 0x14014cbe2
mov rcx, qword [rsp + 0x90]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0xf8]
mov eax, dword [rax]
btr eax, 0x1f
mov ecx, dword [rsp + 0x60]
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x48]
and eax, 1
test eax, eax
je 0x14014cc11
mov dword [rsp + 0x4c], 0x9908b0df
jmp 0x14014cc19
mov dword [rsp + 0x4c], 0
mov eax, dword [rsp + 0x48]
shr eax, 1
xor eax, dword [rsp + 0x4c]
mov dword [rsp + 0x64], eax
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x38]
lea rcx, [rcx*4 + 0xff4]
add rax, rcx
mov qword [rsp + 0x100], rax
mov rax, qword [rsp + 0x100]
mov qword [rsp + 0x98], rax
mov rax, qword [rsp + 0x98]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x22], al
cmp byte [rsp + 0x22], 0
je 0x14014cc9b
movzx eax, byte [rsp + 0x98]
and al, 7
add al, 3
cmp al, byte [rsp + 0x22]
jl 0x14014cc9b
mov rcx, qword [rsp + 0x98]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x100]
mov eax, dword [rax]
mov ecx, dword [rsp + 0x64]
xor ecx, eax
mov dword [rsp + 0x68], ecx
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x38]
shl rcx, 2
add rax, rcx
mov qword [rsp + 0x108], rax
mov rax, qword [rsp + 0x108]
mov qword [rsp + 0xa0], rax
mov rax, qword [rsp + 0xa0]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x23], al
cmp byte [rsp + 0x23], 0
je 0x14014cd1f
movzx eax, byte [rsp + 0xa0]
and al, 7
add al, 3
cmp al, byte [rsp + 0x23]
jl 0x14014cd1f
mov rcx, qword [rsp + 0xa0]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_store4
nop
mov rax, qword [rsp + 0x108]
mov ecx, dword [rsp + 0x68]
mov dword [rax], ecx
jmp 0x14014cacb
mov qword [rsp + 0x40], 0xe3
jmp 0x14014cd4a
mov rax, qword [rsp + 0x40]
inc rax
mov qword [rsp + 0x40], rax
cmp qword [rsp + 0x40], 0x26f
jae 0x14014cfaa
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x40]
lea rcx, [rcx*4 + 0x9c0]
add rax, rcx
mov qword [rsp + 0x110], rax
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0xa8], rax
mov rax, qword [rsp + 0xa8]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x24], al
cmp byte [rsp + 0x24], 0
je 0x14014cdcd
movzx eax, byte [rsp + 0xa8]
and al, 7
add al, 3
cmp al, byte [rsp + 0x24]
jl 0x14014cdcd
mov rcx, qword [rsp + 0xa8]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x110]
mov eax, dword [rax]
and eax, 0x80000000
mov dword [rsp + 0x6c], eax
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x40]
lea rcx, [rcx*4 + 0x9c4]
add rax, rcx
mov qword [rsp + 0x118], rax
mov rax, qword [rsp + 0x118]
mov qword [rsp + 0xb0], rax
mov rax, qword [rsp + 0xb0]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x25], al
cmp byte [rsp + 0x25], 0
je 0x14014ce54
movzx eax, byte [rsp + 0xb0]
and al, 7
add al, 3
cmp al, byte [rsp + 0x25]
jl 0x14014ce54
mov rcx, qword [rsp + 0xb0]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x118]
mov eax, dword [rax]
btr eax, 0x1f
mov ecx, dword [rsp + 0x6c]
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0x50]
and eax, 1
test eax, eax
je 0x14014ce83
mov dword [rsp + 0x54], 0x9908b0df
jmp 0x14014ce8b
mov dword [rsp + 0x54], 0
mov eax, dword [rsp + 0x50]
shr eax, 1
xor eax, dword [rsp + 0x54]
mov dword [rsp + 0x80], eax
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x40]
lea rcx, [rcx*4 - 0x38c]
add rax, rcx
mov qword [rsp + 0x120], rax
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0xb8], rax
mov rax, qword [rsp + 0xb8]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x26], al
cmp byte [rsp + 0x26], 0
je 0x14014cf10
movzx eax, byte [rsp + 0xb8]
and al, 7
add al, 3
cmp al, byte [rsp + 0x26]
jl 0x14014cf10
mov rcx, qword [rsp + 0xb8]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x120]
mov eax, dword [rax]
mov ecx, dword [rsp + 0x80]
xor ecx, eax
mov dword [rsp + 0x70], ecx
mov rax, qword [rsp + 0x180]
add rax, 4
mov rcx, qword [rsp + 0x40]
shl rcx, 2
add rax, rcx
mov qword [rsp + 0x128], rax
mov rax, qword [rsp + 0x128]
mov qword [rsp + 0xc0], rax
mov rax, qword [rsp + 0xc0]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x27], al
cmp byte [rsp + 0x27], 0
je 0x14014cf97
movzx eax, byte [rsp + 0xc0]
and al, 7
add al, 3
cmp al, byte [rsp + 0x27]
jl 0x14014cf97
mov rcx, qword [rsp + 0xc0]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_store4
nop
mov rax, qword [rsp + 0x128]
mov ecx, dword [rsp + 0x70]
mov dword [rax], ecx
jmp 0x14014cd3d
mov qword [rsp + 0x168], 0x26f
mov rax, qword [rsp + 0x180]
add rax, 4
mov ecx, 4
imul rcx, rcx, 0x4df
add rax, rcx
mov qword [rsp + 0x130], rax
mov rax, qword [rsp + 0x130]
mov qword [rsp + 0xc8], rax
mov rax, qword [rsp + 0xc8]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x28], al
cmp byte [rsp + 0x28], 0
je 0x14014d029
movzx eax, byte [rsp + 0xc8]
and al, 7
add al, 3
cmp al, byte [rsp + 0x28]
jl 0x14014d029
mov rcx, qword [rsp + 0xc8]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x130]
mov eax, dword [rax]
and eax, 0x80000000
mov dword [rsp + 0x74], eax
mov rax, qword [rsp + 0x180]
add rax, 4
mov ecx, 4
imul rcx, rcx, 0
add rax, rcx
mov qword [rsp + 0x138], rax
mov rax, qword [rsp + 0x138]
mov qword [rsp + 0xd0], rax
mov rax, qword [rsp + 0xd0]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x29], al
cmp byte [rsp + 0x29], 0
je 0x14014d0ac
movzx eax, byte [rsp + 0xd0]
and al, 7
add al, 3
cmp al, byte [rsp + 0x29]
jl 0x14014d0ac
mov rcx, qword [rsp + 0xd0]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x138]
mov eax, dword [rax]
btr eax, 0x1f
mov ecx, dword [rsp + 0x74]
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x58]
and eax, 1
test eax, eax
je 0x14014d0db
mov dword [rsp + 0x5c], 0x9908b0df
jmp 0x14014d0e3
mov dword [rsp + 0x5c], 0
mov eax, dword [rsp + 0x58]
shr eax, 1
xor eax, dword [rsp + 0x5c]
mov dword [rsp + 0x78], eax
mov rax, qword [rsp + 0x180]
add rax, 4
mov ecx, 4
imul rcx, rcx, 0x18c
add rax, rcx
mov qword [rsp + 0x140], rax
mov rax, qword [rsp + 0x140]
mov qword [rsp + 0xd8], rax
mov rax, qword [rsp + 0xd8]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x2a], al
cmp byte [rsp + 0x2a], 0
je 0x14014d164
movzx eax, byte [rsp + 0xd8]
and al, 7
add al, 3
cmp al, byte [rsp + 0x2a]
jl 0x14014d164
mov rcx, qword [rsp + 0xd8]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_load4
nop
mov rax, qword [rsp + 0x140]
mov eax, dword [rax]
mov ecx, dword [rsp + 0x78]
xor ecx, eax
mov dword [rsp + 0x7c], ecx
mov rax, qword [rsp + 0x180]
add rax, 4
mov ecx, 4
imul rcx, rcx, 0x26f
add rax, rcx
mov qword [rsp + 0x148], rax
mov rax, qword [rsp + 0x148]
mov qword [rsp + 0xe0], rax
mov rax, qword [rsp + 0xe0]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x2b], al
cmp byte [rsp + 0x2b], 0
je 0x14014d1eb
movzx eax, byte [rsp + 0xe0]
and al, 7
add al, 3
cmp al, byte [rsp + 0x2b]
jl 0x14014d1eb
mov rcx, qword [rsp + 0xe0]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_store4
nop
mov rax, qword [rsp + 0x148]
mov ecx, dword [rsp + 0x7c]
mov dword [rax], ecx
mov rax, qword [rsp + 0x180]
mov qword [rsp + 0x150], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0xe8], rax
mov rax, qword [rsp + 0xe8]
shr rax, 3
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x2c], al
cmp byte [rsp + 0x2c], 0
je 0x14014d259
movzx eax, byte [rsp + 0xe8]
and al, 7
add al, 3
cmp al, byte [rsp + 0x2c]
jl 0x14014d259
mov rcx, qword [rsp + 0xe8]
call sub.clang_rt.asan_dynamic_x86_64.dll___asan_report_store4
nop
mov rax, qword [rsp + 0x180]
mov dword [rax], 0
add rsp, 0x178
ret