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

Disassembly:
push rbp
sub rsp, 0x50
lea rbp, [rsp + 0x50]
mov qword [rbp - 0x30], rcx
mov rax, qword [0x14009e7a8]
xor rax, rbp
mov qword [rbp - 8], rax
mov ecx, dword [0x1400a1020]
mov eax, dword [0x1400a1024]
xor r8d, r8d
sub r8d, 1
mov edx, ecx
add edx, r8d
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete cl
and cl, 1
mov byte [rbp - 0x22], cl
cmp eax, 0xa
setl al
and al, 1
mov byte [rbp - 0x21], al
mov dword [rbp - 0x28], 0x7b283f1d
mov eax, dword [rbp - 0x28]
mov dword [rbp - 0x34], eax
sub eax, 0xd064b686
je 0x1400408f7
jmp 0x14004055e
mov eax, dword [rbp - 0x34]
sub eax, 0xe53811a9
je 0x1400408d8
jmp 0x140040571
mov eax, dword [rbp - 0x34]
sub eax, 0x8afd952
je 0x14004060e
jmp 0x140040584
mov eax, dword [rbp - 0x34]
sub eax, 0x115c019e
je 0x140040714
jmp 0x140040597
mov eax, dword [rbp - 0x34]
sub eax, 0x1f894ac0
je 0x1400406f5
jmp 0x1400405aa
mov eax, dword [rbp - 0x34]
sub eax, 0x3ff8da4c
je 0x14004090d
jmp 0x1400405bd
mov eax, dword [rbp - 0x34]
sub eax, 0x437dab95
je 0x1400406e9
jmp 0x1400405d0
mov eax, dword [rbp - 0x34]
sub eax, 0x7b283f1d
je 0x1400405e8
jmp 0x1400405e3
jmp 0x140040944
mov al, byte [rbp - 0x22]
mov cl, byte [rbp - 0x21]
mov dl, al
and dl, cl
xor al, cl
or dl, al
mov eax, 0x3ff8da4c
mov ecx, 0x8afd952
test dl, 1
cmovne eax, ecx
mov dword [rbp - 0x28], eax
jmp 0x140040944
mov rcx, qword [rbp - 0x30]
mov eax, 0x10
mov qword [rbp - 0x48], rax
call fcn.140058490
sub rsp, rax
mov rax, qword [rbp - 0x48]
mov rdx, rsp
mov qword [rbp - 0x40], rdx
call fcn.140058490
sub rsp, rax
mov rax, qword [rbp - 0x48]
mov rdx, rsp
mov qword [rbp - 0x20], rdx
call fcn.140058490
sub rsp, rax
mov rax, qword [rbp - 0x40]
mov rdx, rsp
mov qword [rbp - 0x18], rdx
mov qword [rax], rcx
mov rax, qword [rax]
mov qword [rbp - 0x10], rax
mov rax, qword [rbp - 0x20]
mov dword [rax], 0x270
mov ecx, dword [0x1400a1020]
mov eax, dword [0x1400a1024]
mov edx, ecx
sub edx, 0x447ca3af
sub edx, 1
add edx, 0x447ca3af
imul ecx, edx
and ecx, 1
cmp ecx, 0
sete r11b
cmp eax, 0xa
setl r10b
mov al, r11b
xor al, 0xff
mov r8b, r10b
xor r8b, 0xff
mov cl, 1
xor cl, 1
mov dl, al
and dl, 0xff
and r11b, cl
mov r9b, r8b
and r9b, 0xff
and r10b, cl
or dl, r11b
or r9b, r10b
xor dl, r9b
or al, r8b
xor al, 0xff
or cl, 1
and al, cl
or dl, al
mov eax, 0x3ff8da4c
mov ecx, 0x437dab95
test dl, 1
cmovne eax, ecx
mov dword [rbp - 0x28], eax
jmp 0x140040944
mov dword [rbp - 0x28], 0x1f894ac0
jmp 0x140040944
mov rdx, qword [rbp - 0x20]
mov eax, 0xd064b686
mov ecx, 0x115c019e
cmp dword [rdx], 0x4e0
cmovl eax, ecx
mov dword [rbp - 0x28], eax
jmp 0x140040944
mov rax, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x20]
mov ecx, dword [rcx]
xor edx, edx
sub edx, 0x270
add ecx, edx
movsxd rcx, ecx
mov r11d, dword [rax + rcx*4 + 4]
xor r11d, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0x80000000
mov eax, 0xffffffff
xor eax, 0xc984ea1
or r11d, ecx
or eax, 0xc984ea1
xor r11d, 0xffffffff
and r11d, eax
mov rax, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x20]
mov ecx, dword [rcx]
add ecx, 0xfb1a1291
sub ecx, 0x270
sub ecx, 0xfb1a1291
sub ecx, 0x86340d3c
add ecx, 1
add ecx, 0x86340d3c
movsxd rcx, ecx
mov r10d, dword [rax + rcx*4 + 4]
xor r10d, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0x7fffffff
mov eax, 0xffffffff
xor eax, 0xf5ecd827
or r10d, ecx
or eax, 0xf5ecd827
xor r10d, 0xffffffff
and r10d, eax
mov eax, r11d
xor eax, 0xffffffff
mov r8d, r10d
xor r8d, 0xffffffff
mov edx, 0xffffffff
xor edx, 0x44c87774
mov ecx, eax
and ecx, 0x44c87774
and r11d, edx
mov r9d, r8d
and r9d, 0x44c87774
and r10d, edx
or ecx, r11d
or r9d, r10d
xor ecx, r9d
or eax, r8d
xor eax, 0xffffffff
or edx, 0x44c87774
and eax, edx
or ecx, eax
mov rax, qword [rbp - 0x18]
mov dword [rax], ecx
mov rax, qword [rbp - 0x18]
mov r8d, dword [rax]
shr r8d, 1
mov rax, qword [rbp - 0x18]
mov ecx, dword [rax]
xor ecx, 0xffffffff
mov edx, 0xffffffff
xor edx, 1
mov eax, 0xffffffff
xor eax, 0xf7f9770d
or ecx, edx
or eax, 0xf7f9770d
xor ecx, 0xffffffff
and ecx, eax
xor edx, edx
mov eax, 0x9908b0df
cmp ecx, 0
cmovne edx, eax
mov eax, r8d
xor eax, 0xffffffff
and eax, 0xff05a17d
mov r9d, 0xffffffff
xor r9d, 0xff05a17d
and r8d, r9d
mov ecx, edx
xor ecx, 0xffffffff
and ecx, 0xff05a17d
and edx, r9d
or eax, r8d
or ecx, edx
xor eax, ecx
mov rcx, qword [rbp - 0x10]
mov rdx, qword [rbp - 0x20]
mov edx, dword [rdx]
add edx, 0xbfc84358
sub edx, 0x270
sub edx, 0xbfc84358
xor r8d, r8d
sub r8d, edx
xor edx, edx
sub edx, 0x18d
add r8d, edx
xor edx, edx
sub edx, r8d
movsxd rdx, edx
mov ecx, dword [rcx + rdx*4 + 4]
mov r8d, eax
xor r8d, 0xffffffff
mov edx, ecx
and edx, r8d
xor ecx, 0xffffffff
and eax, ecx
or edx, eax
mov rax, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x20]
movsxd rcx, dword [rcx]
mov dword [rax + rcx*4 + 4], edx
mov dword [rbp - 0x28], 0xe53811a9
jmp 0x140040944
mov rax, qword [rbp - 0x20]
mov ecx, dword [rax]
xor eax, eax
sub eax, 1
sub ecx, eax
mov rax, qword [rbp - 0x20]
mov dword [rax], ecx
mov dword [rbp - 0x28], 0x1f894ac0
jmp 0x140040944
mov rcx, qword [rbp - 8]
xor rcx, rbp
sub rsp, 0x20
call fcn.140058500
nop
mov rsp, rbp
pop rbp
ret
mov rdx, qword [rbp - 0x30]
mov eax, 0x10
mov qword [rbp - 0x50], rax
call fcn.140058490
sub rsp, rax
mov rax, qword [rbp - 0x50]
mov rcx, rsp
call fcn.140058490
sub rsp, rax
mov rax, rsp
mov qword [rcx], rdx
mov dword [rax], 0x270
mov dword [rbp - 0x28], 0x8afd952
jmp 0x140040548