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

Disassembly:
mov eax, 0x1005c601
call fcn.1005ab18
sub esp, 0xfc
cmp byte [ebp + 0x10], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov byte [ebp - 0x54], dl
je 0x10036419
cmp byte [ebp + 0x14], 0
je 0x10035c77
push 0
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetClipBox]
jmp 0x100364b4
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x10069300]
lea eax, [ebp - 0xd0]
push eax
xor ebx, ebx
lea eax, [ebp - 0xe0]
push eax
push ebx
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x4c], ebx
movdqu xmmword [ebp - 0xe0], xmm0
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x44], ebx
call fcn.1000472f
mov dword [ebp - 4], ebx
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x38], 0x58382bdb
mov dword [ebp - 0x50], 0xf746e33
mov dword [eax], ebx
jmp 0x10035cd8
push ecx
push ecx
lea ecx, [ebp + 0x13]
mov byte [ebp + 0x13], bl
call fcn.10036d92
mov eax, dword [ebp - 0x4c]
pop ecx
pop ecx
inc dword [eax]
mov eax, dword [ebp - 0x4c]
cmp dword [eax], 0x16
jge 0x10035cc4
mov dword [eax + 4], 0xfffc
xor eax, eax
mov edx, dword [ebp - 0x4c]
push 0xfffffffffffffff7
pop esi
cmp dword [edx], 0x647c
setne al
xor ecx, ecx
cmp eax, esi
mov eax, dword [ebp - 0x38]
setne cl
mov dword [edx], ecx
xor edx, edx
test ecx, ecx
sete dl
sub edx, eax
mov eax, dword [ebp - 0x38]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setl cl
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 4], ebx
je 0x10035d35
cmp dword [ebp - 0x38], ebx
je 0x10035d35
xor eax, eax
inc eax
jmp 0x10035d37
mov eax, ebx
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x50], ebx
je 0x10035d64
push 1
push ebx
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x74], 0x34859bb7
push 0x3248
push eax
xor dl, dl
lea ecx, [ebp - 0x74]
call fcn.10035c33
add esp, 0x10
jmp 0x1003616e
mov dword [ebp - 0x30], esi
lea ecx, [ebp - 0xb0]
mov dword [ebp - 0x78], 0xffffffff
mov dword [ebp - 0x14], 0xf87b70d8
push 2
call fcn.10002067
mov byte [ebp - 4], 1
lea eax, [ebp - 0xd0]
mov dword [ebp - 0x14], 0x8a746c20
lea edx, [ebp - 0xb0]
mov dword [ebp - 0x70], 0x4e60d2e6
push eax
call fcn.100364fa
pop ecx
lea eax, [ebp - 0x30]
push eax
push ecx
push ebx
lea eax, [ebp - 0x4c]
push eax
push ecx
lea ecx, [ebp - 0x78]
call fcn.1003577a
mov dword [ebp - 0x14], 0x1126
add esp, 0x14
cmp dword [ebp - 0x14], 0x118b
jle 0x10035e51
push 0x20c2
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SetMapMode]
mov dword [ebp - 0x1c], ebx
mov edi, ebx
mov esi, ebx
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x28], 0x72f
mov ecx, esi
lea eax, [edi + ebx]
sar eax, cl
mov ecx, 0x10075eb8
cdq
push edx
push eax
call fcn.10001edd
dec esi
dec dword [ebp - 0x28]
jne 0x10035e01
mov esi, dword [ebp - 0x24]
inc esi
mov dword [ebp - 0x24], esi
cmp esi, 0x651a
jl 0x10035df7
inc edi
push 0
pop ebx
cmp edi, 0x2c27
jl 0x10035def
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x71db
jl 0x10035ded
push ebx
push 0xa84
push ebx
call dword [sym.imp.GDI32.dll_GetRegionData]
mov dword [ebp - 0x30], ebx
jmp 0x1003611f
mov dword [ebp - 0x18], 0xfffffffc
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0x18], 0x3d38e20b
mov dword [ebp - 0x18], 0xe1b460d5
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x6c], 1
push 4
call fcn.10002067
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x90]
mov dword [ebp - 0x84], 0x35a02a90
push 3
call fcn.10002067
push 0x4367
lea eax, [ebp - 0xc8]
mov byte [ebp - 4], 3
push eax
push ebx
push 1
push ebx
push 0x3bba
mov edx, 0x3779
lea ecx, [ebp - 0x34]
call fcn.10036520
add esp, 0x18
mov dword [ebp - 0x34], ebx
jmp 0x10035ee1
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x90]
mov dword [eax + ecx*4], 0x762a
inc dword [ebp - 0x34]
cmp dword [ebp - 0x34], 3
jl 0x10035ece
mov dword [ebp - 0x18], 0x2638
cmp dword [ebp - 0x18], 0x573
jge 0x100360aa
lea eax, [ebp - 0x40]
push eax
push str._lld_n
call fcn.10043117
pop ecx
pop ecx
push dword [ebp - 0x40]
lea ecx, [ebp - 0x68]
call fcn.10007d09
mov byte [ebp - 4], 4
mov dword [ebp - 0x24], ebx
cmp dword [ebp - 0x3c], ebx
jl 0x10035f54
jg 0x10035f29
cmp dword [ebp - 0x40], ebx
jbe 0x10035f54
mov esi, dword [ebp - 0x68]
mov edi, esi
push edi
push str._lld
call fcn.10043117
mov eax, dword [ebp - 0x24]
add edi, 8
inc eax
mov dword [ebp - 0x24], eax
cdq
pop ecx
pop ecx
cmp edx, dword [ebp - 0x3c]
jl 0x10035f2e
jg 0x10035f57
cmp eax, dword [ebp - 0x40]
jb 0x10035f2e
jmp 0x10035f57
mov esi, dword [ebp - 0x68]
mov edx, dword [ebp - 0x64]
mov ecx, esi
mov eax, edx
mov byte [ebp - 0x7c], bl
push dword [ebp - 0x7c]
sub eax, esi
sar eax, 3
push eax
call fcn.10037404
mov edx, dword [ebp - 0x40]
xorps xmm0, xmm0
pop ecx
pop ecx
mov ecx, dword [esi + 4]
mov eax, dword [esi + edx*8 - 8]
mov edi, dword [esi + edx*8 - 4]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x24], edi
movlpd qword [ebp - 0x20], xmm0
movlpd qword [ebp - 0x5c], xmm0
cmp dword [esi], eax
jne 0x10035fbe
cmp ecx, edi
jne 0x10035fbe
push dword [ebp - 0x3c]
mov eax, dword [ebp - 0x3c]
mov ecx, edx
sub ecx, 1
push edx
sbb eax, ebx
push eax
push ecx
call fcn.10046920
push ebx
push 2
push edx
push eax
call fcn.1005ab40
jmp 0x1003607c
mov ecx, dword [ebp - 0x3c]
movlpd qword [ebp - 0xa4], xmm0
cmp ecx, ebx
jl 0x10036019
jg 0x10035fd3
cmp edx, ebx
jbe 0x10036019
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0xa0]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0xa4]
mov ebx, dword [esi]
cmp dword [esi + eax*8], ebx
push 0
pop ebx
jne 0x10036025
mov ebx, dword [esi + 4]
cmp dword [esi + eax*8 + 4], ebx
push 0
pop ebx
jne 0x10036025
add dword [ebp - 0x1c], 1
adc dword [ebp - 0x28], ebx
add eax, 1
adc edi, ebx
cmp edi, ecx
jl 0x10035feb
jg 0x10036025
cmp eax, edx
jb 0x10035feb
jmp 0x10036025
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
sub edx, 1
sbb ecx, ebx
js 0x10036066
jg 0x10036032
cmp edx, ebx
jb 0x10036066
mov eax, dword [ebp - 0x58]
mov edi, dword [ebp - 0x5c]
mov ebx, dword [ebp - 0x18]
cmp dword [esi + edx*8], ebx
push 0
pop ebx
jne 0x1003606c
mov ebx, dword [ebp - 0x24]
cmp dword [esi + edx*8 + 4], ebx
push 0
pop ebx
jne 0x1003606c
add edi, 1
adc eax, ebx
add edx, 0xffffffff
adc ecx, 0xffffffff
cmp ecx, ebx
jg 0x10036038
jl 0x1003606c
cmp edx, ebx
jae 0x10036038
jmp 0x1003606c
mov eax, dword [ebp - 0x58]
mov edi, dword [ebp - 0x5c]
push dword [ebp - 0x28]
push dword [ebp - 0x1c]
push eax
push edi
call fcn.10046920
mov edi, dword [ebp - 0x24]
mov ecx, dword [esi + 4]
push edx
push eax
mov eax, dword [ebp - 0x18]
sub eax, dword [esi]
sbb edi, ecx
push edi
push eax
push str._lld__lld_n
call fcn.10042c54
push esi
mov byte [ebp - 4], 3
call fcn.10042e29
add esp, 0x18
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], ebx
mov dword [ebp - 0x60], ebx
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x84]
push eax
push ecx
push ecx
lea edx, [ebp - 0x38]
call fcn.10036ab6
add esp, 0x10
lea eax, [ebp - 0x4c]
lea edx, [ebp - 0x90]
push eax
push 0x6d9f
push ecx
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x70]
push eax
push 0x41f
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x50]
push eax
push 0xbb5
push 0x5821
lea ecx, [ebp - 0xb0]
call fcn.100370d4
add esp, 0x28
lea ecx, [ebp - 0x90]
call fcn.100020ea
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 1
call fcn.100020ea
inc dword [ebp - 0x30]
cmp dword [ebp - 0x30], 3
jle 0x10035e59
mov byte [ebp - 4], 5
cmp dword [ebp - 0x14], 0xe9f
jge 0x10036163
mov edx, str.dauxd_ljv_iedsya_gtvxw_atpyealyb_nslxuq_dfsg
mov ecx, 0x10075eb8
call fcn.10003d9f
jmp 0x10036163
lea ecx, [ebp - 0xb0]
call fcn.100020ea
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x4c]
call fcn.100020ea
mov eax, dword [0x10078a98]
test al, 1
jne 0x100361c6
or dword [0x10078a84], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x10078a98], eax
xor edx, edx
mov dword [0x10077704], ecx
inc edx
mov esi, 0x270
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x10077704], ecx
inc edx
cmp edx, esi
jl 0x100361a5
mov dword [0x10077700], esi
cmp byte [0x10077017], 0
jne 0x100361e6
push 0x7e64
mov edx, 0x10077700
call fcn.10036664
pop ecx
mov byte [0x10077017], 1
mov dword [ebp - 0x18], 0x1276
cmp dword [ebp - 0x18], 0x151e
jle 0x1003626c
mov dword [ebp - 0x1c], ebx
mov edi, ebx
mov esi, ebx
mov ecx, ebx
mov dword [ebp - 0x14], ebx
mov eax, esi
cdq
idiv ecx
mov eax, edi
mov ecx, edx
shl eax, cl
lea ecx, [ebp - 0x108]
or eax, dword [ebp - 0x1c]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10036228
mov eax, dword [eax]
push eax
call fcn.10042c54
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x108]
call fcn.100023f4
mov ecx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x14], ecx
cmp ecx, 0x25a2
jl 0x10036202
inc esi
cmp esi, 0x4cd1
jl 0x100361fd
inc edi
cmp edi, 0x4649
jl 0x100361fb
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x6a8b
jl 0x100361f9
push 2
lea ecx, [ebp - 0xbc]
call fcn.10002067
mov dword [ebp - 4], 7
lea eax, [ebp - 0xbc]
mov dword [ebp - 0x2c], 1
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x80], 0xfff7
push eax
call fcn.10036d39
pop ecx
mov dword [ebp - 0x2c], ebx
jmp 0x100362b7
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0xbc]
cmp dword [eax + ecx*4], ebx
jne 0x100362bd
inc dword [ebp - 0x2c]
cmp dword [ebp - 0x2c], 1
jle 0x100362a6
push ecx
lea eax, [ebp - 0x80]
push eax
push ecx
push ecx
lea edx, [ebp - 0x2c]
call fcn.10036862
add esp, 0x10
lea ecx, [ebp - 0xbc]
call fcn.100020ea
cmp dword [ebp - 0x18], 0xf3b
jge 0x100362ee
push str.flspmi_kgsjkj_bog_hmrjnzu_qgtjb_kcnxkxq_qqj_bxohixj_ncm_wzj_belfwgclh_rkspik_szlf_xauhqpw
call fcn.10042c54
pop ecx
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x14], 0x73a9
cmp dword [ebp - 0x14], 0x75ac
jle 0x10036340
mov edi, ebx
mov esi, ebx
mov dword [ebp + 0x10], ebx
mov ebx, esi
mov esi, 0x23cc
mov eax, ebx
mov ecx, 0x10075eb8
or eax, edi
cdq
push edx
push eax
call fcn.10001edd
dec ebx
dec esi
jne 0x10036310
mov esi, dword [ebp + 0x10]
inc esi
mov dword [ebp + 0x10], esi
cmp esi, 0x6ddf
jl 0x10036309
inc edi
push 0
pop ebx
cmp edi, 0x31d7
jl 0x10036304
mov eax, dword [0x10077700]
cmp eax, 0x270
jne 0x1003638c
mov edx, 0x10077708
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, 0x100780c8
jl 0x10036351
jmp 0x10036398
cmp eax, 0x4e0
jb 0x1003639d
call fcn.10037344
mov eax, dword [0x10077700]
mov ecx, dword [eax*4 + 0x10077704]
inc eax
mov dword [0x10077700], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x10078a84]
xor ecx, eax
mov dword [ebp - 4], 0xa
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, dword [ebp + 0xc]
mov edx, ecx
shr edx, 0x12
xor edx, ecx
cmp dword [ebp - 0x14], 0x7093
mov dword [eax], edx
jge 0x100363fa
mov edx, str.xmihaapx_kyoof_qyp_vjmhjr_hxu_gywij_tttrobget_rxpmktc
mov ecx, 0x10075eb8
call fcn.10003d9f
jmp 0x100364b4
test dl, dl
je 0x100364ab
push dword [ebp + 0x10]
movdqa xmm0, xmmword [0x100692f0]
lea eax, [ebp - 0xe0]
push eax
mov dword [ebp - 0x14], 0xf94964a5
lea eax, [ebp - 0xf0]
xor ebx, ebx
mov dword [ebp - 0x14], 0xc3099cfe
push eax
mov dword [ebp - 0x14], 1
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x14], 0x811f07b4
push ebx
movdqu xmmword [ebp - 0xf0], xmm0
mov dword [ebp - 0x9c], ebx
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0x94], ebx
call fcn.1000472f
mov dword [ebp - 0x14], 1
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x1c], 0x15466bc6
dec dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
neg eax
mov dword [ebp - 0x14], eax
call fcn.100020ea
jmp 0x100364b4
mov eax, dword [ebp + 8]
mov ecx, dword [ecx]
mov eax, dword [eax]
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret