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

Disassembly:
push rbp
push rsi
sub rsp, 0xb8
lea rbp, [rsp + 0x80]
cmp dword [0x21b839164e8], 0x270
jl 0x21b838f9ba6
mov dword [rbp + 0x30], 0
cmp dword [rbp + 0x30], 0xe3
jge 0x21b838f98fa
movsxd rcx, dword [rbp + 0x30]
lea rax, [0x21b83915290]
mov ecx, dword [rax + rcx*4]
mov edx, 0x80000000
call fcn.21b83909c10
mov dword [rbp + 0x20], eax
mov eax, dword [rbp + 0x30]
add eax, 1
movsxd rcx, eax
lea rax, [0x21b83915290]
mov eax, dword [rax + rcx*4]
xor eax, 0xffffffff
mov dword [rbp + 0x14], eax
mov ecx, 0x7fffffff
mov edx, 0xffffffff
call fcn.21b83904bc0
mov ecx, dword [rbp + 0x14]
mov edx, eax
mov eax, 0xffffffff
xor eax, 0x846607ae
mov dword [rbp + 0x18], eax
call fcn.21b8390b900
mov ecx, eax
mov eax, dword [rbp + 0x18]
or eax, 0x846607ae
mov dword [rbp + 0x1c], eax
mov edx, 0xffffffff
call fcn.21b83904bc0
mov edx, dword [rbp + 0x1c]
mov ecx, eax
mov eax, dword [rbp + 0x20]
and ecx, edx
or eax, ecx
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x30]
xor ecx, ecx
sub ecx, 0x18d
sub eax, ecx
movsxd rcx, eax
lea rax, [0x21b83915290]
mov ecx, dword [rax + rcx*4]
mov dword [rbp + 0x28], ecx
mov eax, dword [rbp + 0x34]
shr eax, 1
mov dword [rbp + 0x24], eax
mov edx, 0xffffffff
call fcn.21b83904bc0
mov edx, dword [rbp + 0x24]
mov ecx, dword [rbp + 0x28]
mov r8d, eax
mov eax, edx
and eax, r8d
mov dword [rbp + 0x2c], eax
xor edx, 0xffffffff
call fcn.21b83909c10
mov edx, dword [rbp + 0x2c]
or edx, eax
mov eax, dword [rbp + 0x34]
and eax, 1
mov eax, eax
mov ecx, eax
lea rax, [0x21b8391526c]
xor edx, dword [rax + rcx*4]
movsxd rcx, dword [rbp + 0x30]
lea rax, [0x21b83915290]
mov dword [rax + rcx*4], edx
mov ecx, dword [rbp + 0x30]
mov edx, 1
call fcn.21b83901d90
mov dword [rbp + 0x30], eax
jmp 0x21b838f97e8
jmp 0x21b838f98fc
mov eax, dword [rbp + 0x30]
mov dword [rbp + 0x10], eax
mov ecx, 0x5776dc95
call fcn.21b8390bea0
mov ecx, eax
mov eax, dword [rbp + 0x10]
cmp eax, ecx
jge 0x21b838f9a63
movsxd rcx, dword [rbp + 0x30]
lea rax, [0x21b83915290]
mov eax, dword [rax + rcx*4]
and eax, 0x80000000
mov dword [rbp - 0x14], eax
mov eax, dword [rbp + 0x30]
mov dword [rbp - 0x10], eax
mov ecx, 0x5776defb
call fcn.21b8390bea0
mov ecx, dword [rbp - 0x14]
mov edx, eax
mov eax, dword [rbp - 0x10]
add eax, edx
movsxd rdx, eax
lea rax, [0x21b83915290]
mov edx, dword [rax + rdx*4]
and edx, 0x7fffffff
call fcn.21b8390b900
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x30]
add eax, 0x94e20071
add eax, 0xffffff1d
sub eax, 0x94e20071
movsxd rcx, eax
lea rax, [0x21b83915290]
mov ecx, dword [rax + rcx*4]
mov eax, dword [rbp + 0x34]
shr eax, 1
xor ecx, eax
mov eax, dword [rbp + 0x34]
and eax, 1
mov eax, eax
mov edx, eax
lea rax, [0x21b8391526c]
mov eax, dword [rax + rdx*4]
mov dword [rbp + 4], eax
mov edx, ecx
xor edx, 0xffffffff
and edx, 0xea20cf73
mov dword [rbp - 4], edx
mov edx, 0xffffffff
xor edx, 0xea20cf73
mov dword [rbp - 8], edx
and ecx, edx
mov dword [rbp], ecx
xor eax, 0xffffffff
mov dword [rbp - 0xc], eax
mov ecx, 0xbd561189
call fcn.21b8390bea0
mov r9d, dword [rbp - 0xc]
mov r8d, dword [rbp - 8]
mov ecx, dword [rbp - 4]
mov edx, dword [rbp]
mov r10d, eax
mov eax, dword [rbp + 4]
and r9d, r10d
mov dword [rbp + 0xc], r9d
and eax, r8d
mov dword [rbp + 8], eax
call fcn.21b8390b900
mov ecx, dword [rbp + 8]
mov edx, eax
mov eax, dword [rbp + 0xc]
or eax, ecx
xor edx, eax
movsxd rcx, dword [rbp + 0x30]
lea rax, [0x21b83915290]
mov dword [rax + rcx*4], edx
mov eax, dword [rbp + 0x30]
mov dword [rbp - 0x1c], eax
mov ecx, 0x57e3d843
call fcn.21b8390bea0
mov ecx, eax
mov eax, dword [rbp - 0x1c]
add eax, ecx
add eax, 1
mov dword [rbp - 0x20], eax
mov ecx, 0x57e3d843
call fcn.21b8390bea0
mov ecx, eax
mov eax, dword [rbp - 0x20]
sub eax, ecx
mov dword [rbp - 0x18], eax
mov ecx, 0x5776defb
call fcn.21b8390bea0
mov ecx, dword [rbp - 0x1c]
mov edx, eax
call fcn.21b83901d90
mov eax, dword [rbp - 0x18]
mov dword [rbp + 0x30], eax
jmp 0x21b838f98fc
mov eax, dword [0x21b83915c4c]
mov dword [rbp - 0x54], eax
mov ecx, 0xd776defa
call fcn.21b8390bea0
mov ecx, eax
mov eax, dword [rbp - 0x54]
and eax, ecx
mov dword [rbp - 0x4c], eax
mov eax, dword [0x21b83915290]
mov dword [rbp - 0x50], eax
mov ecx, 0x28892105
call fcn.21b8390bea0
mov ecx, dword [rbp - 0x4c]
mov edx, eax
mov eax, dword [rbp - 0x50]
and eax, edx
mov dword [rbp - 0x48], eax
xor ecx, 0xffffffff
mov dword [rbp - 0x40], ecx
xor eax, 0xffffffff
mov dword [rbp - 0x3c], eax
mov ecx, 0xe07c9919
call fcn.21b8390bea0
mov edx, dword [rbp - 0x40]
mov ecx, eax
mov eax, dword [rbp - 0x4c]
xor ecx, 0xffffffff
mov dword [rbp - 0x38], ecx
and edx, 0xb70a47e3
mov dword [rbp - 0x34], edx
and eax, ecx
mov dword [rbp - 0x44], eax
mov ecx, 0xe07c9919
call fcn.21b8390bea0
mov r10d, dword [rbp - 0x48]
mov r11d, dword [rbp - 0x44]
mov ecx, dword [rbp - 0x40]
mov r8d, dword [rbp - 0x3c]
mov edx, dword [rbp - 0x38]
mov esi, eax
mov eax, dword [rbp - 0x34]
mov r9d, r8d
and r9d, esi
and r10d, edx
or eax, r11d
or r9d, r10d
xor eax, r9d
or ecx, r8d
xor ecx, 0xffffffff
or edx, 0xb70a47e3
and ecx, edx
or eax, ecx
mov dword [rbp + 0x34], eax
mov eax, dword [0x21b839158c0]
mov dword [rbp - 0x30], eax
mov eax, dword [rbp + 0x34]
mov dword [rbp - 0x2c], eax
mov ecx, 0x5776defb
call fcn.21b8390bea0
mov edx, dword [rbp - 0x30]
mov ecx, eax
mov eax, dword [rbp - 0x2c]
shr eax, cl
mov ecx, edx
xor ecx, 0xffffffff
and ecx, 0x33b4fbbf
mov r8d, 0xffffffff
xor r8d, 0x33b4fbbf
and edx, r8d
mov r9d, eax
xor r9d, 0xffffffff
and r9d, 0x33b4fbbf
mov dword [rbp - 0x28], r9d
and eax, r8d
mov dword [rbp - 0x24], eax
call fcn.21b8390b900
mov edx, dword [rbp - 0x28]
mov ecx, eax
mov eax, dword [rbp - 0x24]
or edx, eax
call fcn.21b83904bc0
mov ecx, dword [rbp + 0x34]
and ecx, 1
mov ecx, ecx
mov edx, ecx
lea rcx, [0x21b8391526c]
xor eax, dword [rcx + rdx*4]
mov dword [0x21b83915c4c], eax
mov dword [0x21b839164e8], 0
mov eax, dword [0x21b839164e8]
mov ecx, eax
add ecx, 1
mov dword [0x21b839164e8], ecx
movsxd rcx, eax
lea rax, [0x21b83915290]
mov eax, dword [rax + rcx*4]
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x34]
shr eax, 0xb
xor eax, dword [rbp + 0x34]
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x34]
shl eax, 7
and eax, 0x9d2c5680
xor eax, dword [rbp + 0x34]
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x34]
shl eax, 0xf
and eax, 0xefc60000
xor eax, dword [rbp + 0x34]
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x34]
shr eax, 0x12
xor eax, dword [rbp + 0x34]
mov dword [rbp + 0x34], eax
mov eax, dword [rbp + 0x34]
add rsp, 0xb8
pop rsi
pop rbp
ret