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

Disassembly:
mov eax, 0x10061c86
call fcn.10060508
sub esp, 0x64
mov byte [ebp - 0x14], dl
mov dword [ebp - 0x34], ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
test dl, dl
je 0x100372f7
mov dword [ebp - 0x20], 0x129e
cmp dword [ebp - 0x20], 0x1582
jle 0x100372be
xor esi, esi
mov edi, esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x1c], 0x36f4
mov ebx, esi
mov ecx, ebx
mov eax, edi
sar eax, cl
lea ecx, [ebp - 0x6c]
cdq
push edx
push eax
call fcn.10001a55
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10037288
mov eax, dword [eax]
push eax
call fcn.100483dc
pop ecx
push esi
push 1
lea ecx, [ebp - 0x6c]
call fcn.10004d74
inc ebx
cmp ebx, 0x557
jl 0x1003726d
dec edi
dec dword [ebp - 0x1c]
jne 0x1003726b
mov edi, dword [ebp - 0x18]
inc edi
mov dword [ebp - 0x18], edi
cmp edi, 0x4714
jl 0x10037261
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [ebp - 0x20], 0xfc9
jge 0x100372d2
push str.fkpgz_ncooa_jefpa_lpw_deonmgpht_oemagel_hzagqir_atbydg_tzwpienb_riowwebqk_omhe
call fcn.100483dc
pop ecx
mov eax, dword [ebp + 8]
or dword [ebp - 4], 0xffffffff
cmp byte [eax], 0
je 0x1003758e
push 0x218e
mov ecx, 0x389c
call fcn.100382dc
pop ecx
jmp 0x1003758e
mov dword [ebp - 0x28], 0xc405
xor esi, esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x1c], 0x3d60
cmp dword [ebp - 0x1c], 0x3f3c
jle 0x10037353
mov ebx, esi
mov edi, esi
mov dword [ebp - 0x20], esi
mov esi, edi
mov edi, 0x1b26
mov ecx, esi
mov eax, ebx
sar eax, cl
mov ecx, 0x1007c858
cdq
push edx
push eax
call fcn.10004668
dec esi
dec edi
jne 0x10037321
mov edi, dword [ebp - 0x20]
inc edi
mov dword [ebp - 0x20], edi
cmp edi, 0x23c1
jl 0x1003731a
inc ebx
push 0
pop esi
cmp ebx, 0x5b75
jl 0x10037315
push 4
lea ecx, [ebp - 0x44]
call fcn.10004892
push 2
pop edi
mov dword [ebp - 4], edi
mov byte [ebp - 4], 3
cmp dword [ebp - 0x1c], 0x3a1b
jge 0x1003737f
mov edx, str.iyaht_vghgsbe_fvoatdt_awny_utqtevlst
mov ecx, 0x1007c858
call fcn.10006b3c
mov dword [ebp - 4], edi
lea eax, [ebp - 0x38]
mov dword [ebp - 0x20], 0xfffffffc
push eax
push ecx
push 0x5f20
lea eax, [ebp - 0x44]
mov dword [ebp - 0x2c], 0x66c1
push eax
push esi
push ecx
mov ecx, 0x2180
call fcn.1003777a
add esp, 0x18
lea eax, [ebp - 0x24]
lea edx, [ebp - 0x28]
push eax
sub esp, 0x10
lea eax, [ebp - 0x44]
push eax
call fcn.10037647
push 0x6e85
push esi
push 0x41de
lea edx, [ebp - 0x2c]
mov ecx, 0x3e5e
call fcn.10038369
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x44]
add esp, 0x24
call fcn.100048f4
mov eax, dword [0x10266008]
mov edi, 0x270
test al, 1
jne 0x10037433
or dword [0x102673b4], 0xffffffff
or eax, 1
mov edx, 0x1571
mov dword [0x10266008], eax
xor ecx, ecx
mov dword [0x10266034], edx
inc ecx
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [ecx*4 + 0x10266034], edx
inc ecx
cmp ecx, edi
jl 0x10037412
mov dword [0x10266030], edi
sub esp, 0xc
call fcn.10037205
mov eax, 0x44455595
add esp, 0xc
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x18], 0xfffffff8
mov dword [ebp - 0x1c], esi
jmp 0x10037491
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x30], 0x9649
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 1
jl 0x10037483
mov ecx, dword [ebp - 0x18]
xor edx, edx
mov eax, dword [ebp - 0x50]
cmp ecx, eax
mov eax, dword [ebp - 0x54]
setne dl
xor ecx, ecx
cmp edx, 0xfffffffa
setge cl
sub ecx, eax
mov eax, dword [ebp - 0x18]
add eax, ecx
jne 0x100374c0
cmp dword [ebp - 0x54], esi
jne 0x100374c0
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x50]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x50]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x18], esi
jmp 0x100374f0
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x54]
mov dword [ebp - 0x30], eax
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jle 0x100374e3
mov eax, dword [0x10266030]
cmp eax, edi
jne 0x1003753f
mov edx, 0x10266038
mov ecx, dword [edx - 4]
xor ecx, dword [edx]
and ecx, 0x7fffffff
xor ecx, dword [edx - 4]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx + 0x630]
xor eax, ecx
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x102669f8
jl 0x10037504
jmp 0x1003754b
cmp eax, 0x4e0
jb 0x10037550
call fcn.1003a4a1
mov eax, dword [0x10266030]
mov ecx, dword [eax*4 + 0x10266034]
inc eax
mov dword [0x10266030], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x102673b4]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
mov ecx, dword [ebp - 0x34]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret