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

Disassembly:
mov eax, 0x1005e28c
call fcn.1005dc20
sub esp, 0x78
cmp byte [ebp + 0x1c], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov byte [ebp - 0x18], dl
je 0x10004486
cmp byte [ebp + 0xc], 0
je 0x100040cc
mov eax, dword [ebp + 0x10]
xor ebx, ebx
mov dword [eax], ebx
jmp 0x100040c2
cmp dword [eax], ebx
jne 0x10004548
dec dword [eax]
cmp dword [eax], 0xffffffe4
jl 0x100040b8
jmp 0x10004548
mov eax, dword [0x1014ef68]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x3c], esi
test al, 1
jne 0x100040f5
or dword [0x1014ef64], 0xffffffff
or eax, 1
push ecx
push 0x1571
mov dword [0x1014ef68], eax
call fcn.10005a33
mov dword [ebp - 0x2c], 0x62d5e48d
xor ebx, ebx
mov dword [ebp - 0x2c], 0xffffffe8
cmp dword [ebp - 0x2c], 1
jge 0x100042b9
mov dword [ebp - 0x28], 0xfffffff8
mov dword [ebp - 0x20], ebx
jmp 0x10004129
mov eax, dword [ebp - 0x20]
mov dword [ebp + eax*4 - 0x48], 0x5683c8fc
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jl 0x1000411b
mov dword [ebp - 0x28], ebx
cmp dword [ebp - 0x28], 1
jg 0x100042b1
mov dword [ebp - 0x20], 0x7822e6e
mov dword [ebp - 0x20], ebx
jmp 0x100041dd
mov dword [ebp - 0x24], ebx
jmp 0x1000415e
mov eax, dword [ebp - 0x24]
mov dword [ebp + eax*4 - 0x1c], 0x4990069f
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], 1
jl 0x10004150
cmp dword [ebp - 0x20], ebx
jne 0x100041e7
mov dword [ebp - 0x1c], ebx
jmp 0x100041d4
cmp dword [ebp - 0x28], ebx
je 0x100041b2
mov dword [ebp - 0x24], 0xedfa831e
mov dword [ebp - 0x24], 1
cmp dword [ebp - 0x24], ebx
jl 0x100041d1
mov eax, dword [ebp - 0x1c]
cmp dword [ebp + eax*4 - 0x48], ebx
jne 0x100041d1
push ecx
push ecx
push 0x6b9f
lea eax, [ebp + 0x1f]
mov byte [ebp + 0x1f], bl
push ebx
push eax
mov ecx, 0x3818
call fcn.10002486
add esp, 0x14
dec dword [ebp - 0x24]
jns 0x10004186
jmp 0x100041d1
lea eax, [ebp - 0x11]
mov byte [ebp - 0x11], bl
push eax
push 1
push 0x5f95
push 1
mov edx, 0xcc7
xor cl, cl
call fcn.100027f7
add esp, 0x10
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 1
jle 0x1000416e
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 1
jle 0x1000414b
mov dword [ebp - 0x34], 0x2eb3
cmp dword [ebp - 0x34], 0x322d
jle 0x10004274
mov esi, ebx
mov dword [ebp - 0x30], ebx
mov edi, ebx
mov dword [ebp - 0x20], ebx
mov ecx, edi
mov dword [ebp - 0x24], esi
mov edi, esi
mov esi, ebx
sar edi, cl
mov ecx, ebx
mov dword [ebp - 0x24], ebx
mov eax, esi
shl eax, cl
lea ecx, [ebp - 0x6c]
xor eax, edi
cdq
push edx
push eax
call fcn.10001aaa
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1000422c
mov eax, dword [eax]
push eax
call fcn.10046fe3
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x6c]
call fcn.100055ae
mov ecx, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 0x2aaf
jl 0x10004211
inc esi
cmp esi, 0x710f
jl 0x1000420c
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x30]
inc edi
mov dword [ebp - 0x20], edi
cmp edi, 0x7a41
jl 0x10004201
inc esi
mov dword [ebp - 0x30], esi
cmp esi, 0x33c9
jl 0x100041fc
mov byte [ebp - 0x12], bl
cmp dword [ebp - 0x34], 0x2e37
jge 0x1000428b
push str.mskny_nudd_upnkg_icjc_cykkr_qsybsyaxw_oogeguiww_vdwgrkrxv_hpmessw_lpkg_inyezktn_brcppsj_jsxhknkhs
call fcn.10046fe3
pop ecx
or dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x12]
push eax
push ecx
push 0x22ff
push 0x713
push ecx
xor cl, cl
call fcn.100024be
add esp, 0x14
inc dword [ebp - 0x28]
jmp 0x10004132
inc dword [ebp - 0x2c]
jmp 0x10004105
push ebx
push 0x78a8
call fcn.10001fdd
pop ecx
pop ecx
cmp byte [0x1007a410], bl
jne 0x1000438d
mov dword [ebp - 0x30], 0x1575
cmp dword [ebp - 0x30], 0x16fc
jle 0x1000432c
mov esi, ebx
mov dword [ebp - 0x34], ebx
mov edi, ebx
mov dword [ebp - 0x38], ebx
mov ecx, edi
mov ebx, esi
mov esi, dword [ebp - 0x38]
sar ebx, cl
mov ecx, esi
mov eax, ebx
sar eax, cl
mov ecx, 0x100792d8
cdq
push edx
push eax
call fcn.10004ea6
inc esi
cmp esi, 0x7994
jl 0x100042f5
mov esi, dword [ebp - 0x34]
inc edi
push 0
pop ebx
cmp edi, 0x3f0
jl 0x100042e9
inc esi
mov dword [ebp - 0x34], esi
cmp esi, 0x195f
jl 0x100042e7
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push ecx
push eax
call fcn.10005a33
mov dword [ebp - 4], 2
cmp dword [ebp - 0x30], 0x1277
jge 0x10004358
mov edx, str.iwydf_trqo_dgputkbrr_fvmetaicl_cbjbtc_hfnhlur
mov ecx, 0x100792d8
call fcn.10008ec9
or dword [ebp - 4], 0xffffffff
mov esi, dword [ebp + 0x14]
mov byte [0x1007a410], 1
jmp 0x10004390
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x20], 8
lea ecx, [ebp - 0x54]
push 1
call fcn.10005147
push 4
pop edi
lea eax, [ebp - 0x40]
mov dword [ebp - 4], edi
push eax
push 1
push ecx
lea edx, [ebp - 0x54]
call fcn.10001ae2
add esp, 0xc
mov dword [ebp - 0x20], ebx
jmp 0x100043dc
cmp dword [ebp - 0x20], ebx
jne 0x100043e2
push ecx
push ecx
push 0x2326
push 0x38c5
mov dl, 1
call fcn.1000243d
add esp, 0x10
dec dword [ebp - 0x20]
cmp dword [ebp - 0x20], 0xfffffffa
je 0x100043be
lea ecx, [ebp - 0x54]
call fcn.100051ca
mov eax, dword [0x1014dbe0]
cmp eax, 0x270
jne 0x10004435
mov edx, 0x1014dbe8
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, edi
cmp edx, 0x1014e5a8
jl 0x100043fb
jmp 0x10004441
cmp eax, 0x4e0
jb 0x10004446
call fcn.10005a6e
mov eax, dword [0x1014dbe0]
mov ecx, dword [eax*4 + 0x1014dbe4]
inc eax
mov dword [0x1014dbe0], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x1014ef64]
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 dword [esi], eax
jmp 0x10004548
test dl, dl
je 0x10004521
mov dword [ebp - 0x30], 0x156b
xor ebx, ebx
cmp dword [ebp - 0x30], 0x15fa
jle 0x100044fa
mov esi, ebx
mov edi, ebx
mov eax, ebx
mov dword [ebp - 0x34], ebx
add eax, edi
lea ecx, [ebp - 0x84]
add eax, esi
cdq
push edx
push eax
call fcn.10001aaa
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x100044c5
mov eax, dword [eax]
push eax
call fcn.10046fe3
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x84]
call fcn.100055ae
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
cmp eax, 0x7974
jl 0x100044a9
inc edi
cmp edi, 0x770
jl 0x100044a4
inc esi
cmp esi, 0x5dad
jl 0x100044a2
mov byte [ebp - 0x13], bl
cmp dword [ebp - 0x30], 0x14e2
jge 0x10004511
push str.cqnuedd_fjypo_ajhafno_ofnf_gzsp_heoiav_pioygmm_acjsxfipk_lcmha_jymqyyixp_wxeot_vigcqslw_qpux_esppynl
call fcn.10046fe3
pop ecx
or dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x13]
push eax
call fcn.10002543
pop ecx
jmp 0x10004548
mov eax, dword [ebp + 0x18]
push 0x1a
pop esi
cmp dword [eax], esi
jge 0x10004532
movzx edx, word [ecx]
add edx, dword [eax]
jmp 0x1000453f
mov eax, dword [eax]
cdq
idiv esi
mov eax, dword [ebp + 8]
movzx eax, word [eax]
add edx, eax
mov ecx, dword [ebp + 0x20]
push edx
call fcn.1000501e
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret