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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
call fcn.00d86fa0
test al, al
je 0xd58cb8
call fcn.00d80510
test al, al
je 0xd58cb3
call dword [0xfcd8fd40]
mov ecx, eax
mov edx, 0x677d5b0b
mov eax, 0xc5c61402
shrd eax, edx, cl
shr edx, cl
mov esi, 0x9882a4f4
mov ebx, 0x3a39ebfd
shrd ebx, esi, cl
sar esi, cl
and cl, 0x20
test cl, cl
je 0xd58944
mov eax, edx
xor edx, edx
mov ebx, esi
and eax, 0xef2f7435
and edx, 0x21f200fe
neg cl
mov ebp, 0
sbb ebp, ebp
or ebp, esi
and ebp, 0x5e0dff01
or ebp, edx
and ebx, 0x10d08bca
or ebx, eax
mov ecx, ebx
and ecx, 0xd1afd7ed
mov esi, ebp
and esi, 0x7f5558cc
xor ecx, 0xa94025
xor esi, 0xc60558c4
mov edi, ebx
and edi, 0x2e502812
xor edi, 0x4100800
mov eax, edi
mul ecx
mov dword [esp + 0x10], eax
imul edi, esi
add edi, edx
mov eax, ebp
and eax, 0xaaa733
xor eax, 0x20a402
imul eax, ecx
mov ecx, ebx
xor ecx, 0xd5169fc8
add eax, edi
mov dword [esp + 4], eax
mov eax, ebx
xor eax, 0xfb46b7da
mov edx, ecx
or edx, 0xd1afd7ed
and edx, eax
mov dword [esp + 8], edx
mov edi, ebp
xor edi, 0x3970a40a
mov eax, ebp
xor eax, 0x39da0339
mov esi, edi
or esi, 0x7f5558cc
and esi, eax
mov dword [esp + 0xc], esi
xor ebx, 0x96015
and ebx, 0x40ff315
mov eax, ecx
and eax, 0xfbf00cea
or eax, ebx
xor ebp, 0x4844050
and ebp, 0x35c4c052
mov edx, edi
and edx, 0x4a3b3fad
or edx, ebp
xor eax, 0xd5a024f8
and ecx, 0xd1afd7ed
or ecx, eax
xor edx, 0xca91989e
and edi, 0x7f5558cc
or edi, edx
mov edx, edi
not edx
and edx, esi
mov ebp, dword [esp + 8]
mov ebx, ebp
not ebx
and ebx, ecx
mov eax, ebx
imul ebx, edx
mov esi, ecx
not esi
and esi, ebp
mov ebp, dword [esp + 0xc]
not ebp
and ebp, edi
mul esi
mov dword [esp], eax
imul ebp, esi
add ebp, edx
add ebp, ebx
mov ebx, ecx
mov eax, dword [esp + 8]
and ebx, eax
or ecx, eax
mov edx, edi
mov eax, dword [esp + 0xc]
and edx, eax
or edi, eax
mov eax, ecx
imul ecx, edx
mul ebx
add ecx, edx
imul edi, ebx
add edi, ecx
mov ecx, dword [esp]
add ecx, dword [esp + 0x10]
adc ebp, dword [esp + 4]
add ecx, eax
mov dword [esp], ecx
adc ebp, edi
mov edx, ebp
shr edx, 1
mov dword [esp + 8], edx
mov eax, edx
not eax
or eax, ecx
add eax, edx
mov ecx, 0
adc ecx, 0xffffffff
add eax, 1
adc ecx, 0
mov edx, eax
and edx, 0xfffffffd
mov dword [esp + 0xc], edx
mov edi, eax
and edi, 2
mov esi, eax
or esi, 0xfffffffd
add esi, 1
mov ebx, 0
adc ebx, 0xffffffff
or eax, 2
mov edx, esi
imul edx, ecx
mov dword [esp + 4], edx
mul edi
mov dword [esp + 0x10], eax
imul ecx, edi
mov edi, dword [esp + 8]
or edx, ecx
mov dword [esp + 0x14], edx
mov eax, esi
mov ecx, dword [esp + 0xc]
mul ecx
add edx, dword [esp + 4]
imul ebx, ecx
add ebx, edx
sub eax, dword [esp + 0x10]
sbb ebx, dword [esp + 0x14]
add edi, dword [esp]
adc ebp, 0
add edi, eax
adc ebp, ebx
call dword [0xfcd8fd64]
test eax, eax
jne 0xd58b28
mov ebx, edi
jmp 0xd58c7a
call dword [0xfcd8fd3c]
mov dword [esp + 0xc], eax
mov ebx, edi
and edi, 0xb31413ac
mov eax, ebp
and eax, 0x3601e57a
mov esi, eax
mov dword [esp + 0x14], eax
mov eax, ebx
and eax, 0x4cebec53
mov dword [esp + 8], eax
xor eax, 0x4cebec53
mov ecx, eax
mul edi
mov dword [esp + 0x10], eax
imul ecx, esi
add edx, ecx
mov eax, ebp
and eax, 0xc9fe1a85
mov dword [esp], eax
xor eax, 0xc9fe1a85
imul eax, edi
add eax, edx
mov dword [esp + 4], eax
mov ecx, ebp
xor ecx, 0xc9fe1a85
mov esi, ebx
xor esi, 0x4cebec53
add esi, ebx
adc ecx, ebp
sub esi, edi
sbb ecx, dword [esp + 0x14]
mov edx, ecx
not edx
and edx, dword [esp]
mov ebx, dword [esp + 8]
mov edi, ebx
not edi
and edi, esi
mov eax, edi
imul edi, edx
mov edx, esi
not edx
and edx, ebx
mov ebp, dword [esp]
not ebp
and ebp, ecx
imul ebp, edx
mul edx
mov ebx, eax
add ebp, edx
add ebp, edi
mov edx, ecx
mov eax, dword [esp]
and edx, eax
or ecx, eax
mov edi, esi
mov eax, dword [esp + 8]
and edi, eax
or esi, eax
mov eax, esi
imul esi, edx
mul edi
add esi, edx
imul ecx, edi
add ecx, esi
add ebx, dword [esp + 0x10]
adc ebp, dword [esp + 4]
add ebx, eax
adc ebp, ecx
mov edi, ebx
mov ecx, dword [esp + 0xc]
shrd ebx, ebp, cl
mov edx, ebp
mov eax, ecx
shr ebp, cl
test al, 0x20
je 0xd58c08
mov ebx, ebp
xor ebp, ebp
mov esi, ebp
mov dword [esp + 8], edx
and esi, edx
mov eax, ebx
mov dword [esp + 0x10], edi
and eax, edi
mov ecx, eax
and ecx, 2
mov dword [esp + 4], ecx
mov ecx, eax
or ecx, 0xfffffffd
add ecx, 1
mov edi, 0
adc edi, 0xffffffff
mov dword [esp + 0xc], edi
mov edi, eax
or eax, 2
mov dword [esp], ecx
mov edx, dword [esp]
imul edx, esi
mov dword [esp], edx
mov edx, dword [esp + 4]
imul esi, edx
mul edx
mov dword [esp + 4], eax
or edx, esi
mov esi, edx
and edi, 0xfffffffd
mov eax, ecx
mul edi
add edx, dword [esp]
imul edi, dword [esp + 0xc]
add edi, edx
sub eax, dword [esp + 4]
sbb edi, esi
add ebx, dword [esp + 0x10]
adc ebp, dword [esp + 8]
add ebx, eax
adc ebp, edi
not ebp
not ebx
and ebp, 0xfefefefe
mov eax, ebp
shld eax, ebx, 1
and ebx, 0xfefefefe
lea ecx, [ebx + ebx]
not eax
not ecx
add ecx, ebx
adc eax, ebp
push eax
push ecx
call fcn.00d59f20
add esp, 8
test al, al
je 0xd58cb3
call fcn.00d5d230
call fcn.00d5bd50
call fcn.00d88960
push 0
call dword [0xfcd8fd34]