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

Disassembly:
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
cmp dword [0x18007a950], 0x270
jl 0x18003b4e2
mov dword [rsp + 0x24], 0
cmp dword [rsp + 0x24], 0xe3
jge 0x18003b328
movsxd rax, dword [rsp + 0x24]
lea rcx, [0x18007b3e0]
mov ecx, dword [rcx + rax*4]
call fcn.180009370
mov ecx, dword [rsp + 0x24]
add ecx, 1
movsxd rcx, ecx
lea rdx, [0x18007b3e0]
mov ebp, dword [rdx + rcx*4]
mov edx, 0xffffffff
xor edx, 0x7fffffff
mov ecx, ebp
xor ecx, edx
and ecx, ebp
mov edx, eax
and edx, ecx
xor eax, ecx
or edx, eax
mov dword [rsp + 0x20], edx
xor esi, esi
sub esi, dword [rsp + 0x24]
mov ecx, 0xefeb153a
call fcn.18002c000
xor ecx, ecx
sub ecx, eax
add esi, ecx
xor eax, eax
sub eax, esi
cdqe
lea rcx, [0x18007b3e0]
mov esi, dword [rcx + rax*4]
mov eax, dword [rsp + 0x20]
shr eax, 1
xor esi, eax
mov ecx, dword [rsp + 0x20]
call fcn.180012f10
mov eax, eax
lea rcx, [0x18007a544]
mov edi, dword [rcx + rax*4]
mov ebx, esi
xor ebx, 0xffffffff
and ebx, 0xb0193f8b
mov ecx, 0x5ff22b3c
call fcn.18002c000
xor eax, 0xffffffff
and esi, eax
mov ecx, edi
xor ecx, 0xffffffff
and ecx, 0xb0193f8b
and edi, eax
or ebx, esi
or ecx, edi
xor ebx, ecx
movsxd rax, dword [rsp + 0x24]
lea rcx, [0x18007b3e0]
mov dword [rcx + rax*4], ebx
mov esi, dword [rsp + 0x24]
add esi, 0x3a3f500
mov ecx, 0xefeb14b6
call fcn.18002c000
add esi, eax
sub esi, 0x3a3f500
mov dword [rsp + 0x24], esi
jmp 0x18003b230
jmp 0x18003b32a
cmp dword [rsp + 0x24], 0x26f
jge 0x18003b46a
movsxd rax, dword [rsp + 0x24]
lea rcx, [0x18007b3e0]
mov esi, dword [rcx + rax*4]
and esi, 0x80000000
mov eax, dword [rsp + 0x24]
add eax, 1
cdqe
lea rcx, [0x18007b3e0]
mov edi, dword [rcx + rax*4]
xor edi, 0xffffffff
mov ecx, 0x9014eb48
call fcn.18002c000
xor eax, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0x74d5b65b
or edi, eax
or ecx, 0x74d5b65b
xor edi, 0xffffffff
and edi, ecx
or esi, edi
mov dword [rsp + 0x20], esi
mov eax, dword [rsp + 0x24]
add eax, 0xffffff1d
cdqe
lea rcx, [0x18007b3e0]
mov edi, dword [rcx + rax*4]
mov ebx, dword [rsp + 0x20]
shr ebx, 1
mov esi, edi
xor esi, 0xffffffff
and esi, 0xb5f49bea
mov ebp, 0xffffffff
xor ebp, 0xb5f49bea
and edi, ebp
mov ecx, ebx
xor ecx, 0xffffffff
call fcn.1800360b0
and ebx, ebp
or esi, edi
or eax, ebx
xor esi, eax
mov edi, dword [rsp + 0x20]
xor edi, 0xffffffff
mov ecx, 0xefeb14b6
call fcn.18002c000
xor eax, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0x48d7b987
or edi, eax
or ecx, 0x48d7b987
xor edi, 0xffffffff
and edi, ecx
mov eax, edi
lea rcx, [0x18007a544]
mov ebp, dword [rcx + rax*4]
mov ecx, esi
call fcn.18003b5c0
mov edi, eax
mov ecx, 0x2b7be828
call fcn.18002c000
mov ebx, eax
and ebx, edi
mov edi, 0xffffffff
xor edi, 0xc490fc9f
and esi, edi
mov ecx, ebp
xor ecx, 0xffffffff
call fcn.18002db10
and ebp, edi
or ebx, esi
or eax, ebp
xor ebx, eax
movsxd rax, dword [rsp + 0x24]
lea rcx, [0x18007b3e0]
mov dword [rcx + rax*4], ebx
mov esi, dword [rsp + 0x24]
mov ecx, 0xefeb14b6
call fcn.18002c000
add esi, eax
mov dword [rsp + 0x24], esi
jmp 0x18003b32a
mov eax, dword [0x18007bd9c]
and eax, 0x80000000
mov ecx, dword [0x18007b3e0]
xor ecx, 0xffffffff
mov edx, 0xffffffff
xor edx, 0x7fffffff
mov ebp, 0xffffffff
xor ebp, 0x558013f6
or ecx, edx
or ebp, 0x558013f6
xor ecx, 0xffffffff
and ecx, ebp
or eax, ecx
mov dword [rsp + 0x20], eax
mov esi, dword [0x18007ba10]
mov eax, dword [rsp + 0x20]
shr eax, 1
xor esi, eax
mov edi, dword [rsp + 0x20]
mov ecx, 0xefeb14b6
call fcn.18002c000
and edi, eax
mov eax, edi
lea rcx, [0x18007a544]
xor esi, dword [rcx + rax*4]
mov dword [0x18007bd9c], esi
mov dword [0x18007a950], 0
mov eax, dword [0x18007a950]
xor ecx, ecx
sub ecx, 1
mov edx, eax
sub edx, ecx
mov dword [0x18007a950], edx
cdqe
lea rcx, [0x18007b3e0]
mov eax, dword [rcx + rax*4]
mov dword [rsp + 0x20], eax
mov esi, dword [rsp + 0x20]
shr esi, 0xb
mov ebp, dword [rsp + 0x20]
mov ebx, ebp
xor ebx, 0xffffffff
mov ecx, 0xd9837a5c
call fcn.18002c000
mov edi, eax
and edi, ebx
mov ecx, 0x36686eeb
call fcn.18003b5c0
mov ebx, eax
and ebp, ebx
mov ecx, esi
call fcn.18003b5c0
and eax, 0x36686eeb
and esi, ebx
or edi, ebp
or eax, esi
xor edi, eax
mov dword [rsp + 0x20], edi
mov esi, dword [rsp + 0x20]
shl esi, 7
mov ecx, 0x72c74237
call fcn.18002c000
and esi, eax
xor esi, dword [rsp + 0x20]
mov dword [rsp + 0x20], esi
mov esi, dword [rsp + 0x20]
mov ecx, 0xefeb14b8
call fcn.18002c000
mov ecx, eax
shl esi, cl
and esi, 0xefc60000
xor esi, dword [rsp + 0x20]
mov dword [rsp + 0x20], esi
mov eax, dword [rsp + 0x20]
shr eax, 0x12
mov ecx, dword [rsp + 0x20]
mov edx, ecx
xor edx, 0xffffffff
mov ebp, eax
and ebp, edx
xor eax, 0xffffffff
and ecx, eax
or ebp, ecx
mov dword [rsp + 0x20], ebp
mov eax, dword [rsp + 0x20]
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
ret