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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x4f9c7c]
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov ebx, 0xa
mov dword [esp + 0x38], eax
push edi
mov dword [esp + 0x2c], ecx
movzx eax, word [esi]
mov dword [esp + 0x34], 0
mov dword [0x4f9c7c], 0
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x14], ebx
mov byte [0x4f9a8e], 0
mov byte [0x4f9a8b], 0
mov byte [0x4f9a8a], 0
mov dword [0x4f9c80], 0
mov byte [esp + 0x12], 0
mov byte [esp + 0x10], 0
mov byte [esp + 0xe], 0
mov byte [esp + 0x13], 0
mov byte [esp + 0xf], 0
mov byte [esp + 0x11], 0
test ax, ax
je 0x45ea64
mov ecx, eax
nop word [eax + eax]
push ecx
mov ebx, 1
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_towupper]
movzx eax, ax
add esp, 4
add eax, 0xffffffbd
cmp eax, 0x19
ja case.0x45e8a5.69
movzx eax, byte [eax + 0x45f088]
jmp dword [eax*4 + 0x45f060]
movzx eax, word [esi + 2]
lea edi, [esi + 2]
mov ebx, eax
test eax, 0xffffff80
je 0x45e8c0
xor edx, edx
jmp 0x45e8ce
push 2
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__isctype]
add esp, 8
mov edx, eax
mov eax, ebx
and eax, 0xffdf
test edx, edx
movzx ecx, ax
mov eax, ebx
cmove ecx, eax
movzx ecx, cx
cmp ecx, 0x4c
sete al
inc al
cmp ecx, 0x4c
mov byte [0x4f9a8e], al
cmovne edi, esi
mov esi, edi
jmp case.0x45e8a5.69
movzx eax, word [esi + 2]
mov edx, eax
test ax, ax
je case.0x45e8a5.69
mov ebx, edx
add esi, 2
mov dword [esp + 0x14], ebx
jmp 0x45ea52
lea edi, [esi + 2]
nop dword [eax]
movzx eax, word [edi]
cmp eax, 0x20
je 0x45e92d
cmp eax, 9
jne 0x45e932
add edi, 2
jmp 0x45e920
mov ebx, edi
test ax, ax
je 0x45e971
mov esi, eax
nop dword [eax + eax]
mov ecx, 0x4e4614
mov edx, 0x20
nop word [eax + eax]
cmp si, dx
je 0x45e988
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x45e950
movzx eax, word [ebx + 2]
add ebx, 2
mov esi, eax
test ax, ax
jne 0x45e940
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45e976
sub ecx, edx
sar ecx, 1
lea ebx, [edi + ecx*2]
mov eax, ebx
mov ecx, 0x4fbb78
sub eax, edi
push 0
sar eax, 1
push eax
push edi
call fcn.0043d120
mov ecx, eax
mov dword [0x4f9c7c], ecx
test ecx, ecx
je 0x45efd5
cmp byte [ecx + 0x51], 0
jne 0x45efd5
mov eax, dword [ecx + 0x10]
sub eax, 2
cmp eax, 1
ja 0x45efd5
mov eax, dword [ecx + 0xc]
cmp word [eax + 4], 0
jne 0x45efd5
cmp word [eax + 0x14], 0
jne 0x45efd5
lea esi, [ebx - 2]
jmp case.0x45e8a5.69
mov byte [0x4f9a8b], 1
jmp case.0x45e8a5.69
lea eax, [esi + 2]
push eax
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll__wtoi]
add esp, 4
cmp eax, 1
cmovl eax, ebx
dec eax
mov dword [0x4f9c80], eax
jmp case.0x45e8a5.69
push 6
push str.Random
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsnicmp]
mov ebx, dword [esp + 0x20]
add esp, 0xc
test eax, eax
jne 0x45ea2a
mov byte [esp + 0xf], 1
add esi, 0xa
jmp 0x45ea52
mov byte [0x4f9a8a], 1
jmp 0x45ea52
mov byte [esp + 0x11], 1
mov dword [esp + 0x30], 0
jmp case.0x45e8a5.69
mov byte [esp + 0x12], 1
jmp case.0x45e8a5.69
mov byte [esp + 0x13], 1
mov ebx, dword [esp + 0x14]
movzx eax, word [esi + 2]
add esi, 2
mov ecx, eax
test ax, ax
jne 0x45e880
mov esi, dword [ebp + 8]
movzx edx, word [esi]
test dx, dx
je 0x45efd5
mov ecx, dword [0x4fb218]
mov dword [esp + 0x24], ecx
mov al, byte [ecx + 0x17]
test al, al
jne 0x45ea8a
mov eax, dword [ecx + 0xc]
mov al, byte [eax + 0x17]
cmp al, 2
ja 0x45efd5
mov edi, 1
mov ecx, esi
nop dword [eax]
cmp dx, bx
lea eax, [edi + 1]
cmovne eax, edi
add ecx, 2
mov edi, eax
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x45eaa0
mov eax, dword [esp + 0x14]
mov ebx, ecx
sub ebx, esi
sar ebx, 1
cmp byte [esp + 0x12], 0
mov dword [esp + 0x28], ebx
jne 0x45eafb
cmp ecx, esi
jbe 0x45eafb
cmp word [ecx - 2], ax
jne 0x45eafb
mov byte [esp + 0x10], 1
dec edi
mov cl, byte [esp + 0xe]
cmp edi, 1
jne 0x45eb28
mov ecx, dword [esp + 0x24]
push edi
push 0
push ebx
push esi
call fcn.004b3f70
mov ebx, eax
jmp 0x45efda
cmp ax, 0xa
jne 0x45eadd
push 0xa
push esi
call dword [sym.imp.VCRUNTIME140.dll_wcschr]
add esp, 8
test eax, eax
je 0x45eadd
cmp eax, esi
jbe 0x45eadd
cmp word [eax - 2], 0xd
jne 0x45eadd
mov cl, 1
mov byte [esp + 0xe], cl
mov byte [esp + 0x10], cl
jmp 0x45eae1
cmp dword [0x4f9c7c], 0
jne 0x45eb35
test cl, cl
je 0x45eba4
lea eax, [ebx*2 + 6]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ecx, eax
add esp, 4
mov dword [esp + 0x34], ecx
test ecx, ecx
jne 0x45eb6b
mov ecx, dword [esp + 0x2c]
push 0x4cdc40
push eax
push 0x4e1bcc
call fcn.0044d800
mov ebx, eax
jmp 0x45efda
lea eax, [ebx*2 + 2]
push eax
push esi
push ecx
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [esp + 0x40]
add esp, 0xc
cmp byte [esp + 0xe], 0
mov esi, ecx
je 0x45eba4
mov eax, dword [0x4ec534]
mov dword [ecx + ebx*2], eax
mov ax, word [0x4ec538]
mov word [ecx + ebx*2 + 4], ax
add ebx, 2
mov dword [esp + 0x28], ebx
xor ecx, ecx
lea eax, [edi + 1]
cmp byte [esp + 0xf], cl
setne cl
lea ecx, [ecx*4 + 4]
imul eax, ecx
mov dword [esp + 0x1c], ecx
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
jne 0x45ebeb
mov ecx, dword [esp + 0x2c]
push 0x4cdc40
push eax
push 0x4e1bcc
call fcn.0044d800
mov ebx, eax
jmp 0x45efda
mov edx, dword [0x4fd2f8]
mov edi, eax
mov dword [eax], esi
movzx eax, word [esi]
mov dword [esp + 0x18], 0
test ax, ax
je 0x45ec8c
mov ecx, eax
xor ebx, ebx
nop dword [eax]
cmp cx, word [esp + 0x14]
jne 0x45ec76
xor eax, eax
inc ebx
mov word [esi], ax
cmp byte [esp + 0xf], al
je 0x45ec6d
sub dword [0x4f8b5c], 1
jne 0x45ec37
call fcn.00429600
mov edx, dword [0x4fd2f8]
mov ecx, dword [edx]
mov eax, ecx
shr eax, 0xb
add edx, 4
xor ecx, eax
mov dword [0x4fd2f8], edx
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
shr eax, 1
mov dword [edi + 4], eax
add edi, dword [esp + 0x1c]
lea eax, [esi + 2]
mov dword [edi], eax
movzx eax, word [esi + 2]
add esi, 2
mov ecx, eax
test ax, ax
jne 0x45ec10
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x28]
cmp byte [esp + 0x10], 0
mov esi, dword [esp + 0x18]
mov al, byte [esp + 0xf]
jne 0x45ecf2
inc esi
mov dword [esp + 0x18], esi
test al, al
je 0x45ecf2
sub dword [0x4f8b5c], 1
jne 0x45ecb8
call fcn.00429600
mov edx, dword [0x4fd2f8]
mov ecx, dword [edx]
mov eax, ecx
shr eax, 0xb
add edx, 4
xor ecx, eax
mov dword [0x4fd2f8], edx
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
shr eax, 1
mov dword [edi + 4], eax
mov al, byte [esp + 0xf]
cmp dword [0x4f9c7c], 0
je 0x45ed02
push 0x45e5b0
jmp 0x45ed20
test al, al
je 0x45ed0d
push 0x45e5a0
jmp 0x45ed20
cmp byte [esp + 0x13], 0
mov eax, 0x45e3f0
mov ecx, 0x45e500
cmovne eax, ecx
push eax
push dword [esp + 0x20]
push esi
push dword [esp + 0x2c]
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_qsort]
mov esi, dword [esp + 0x34]
add esp, 0x10
mov ecx, esi
push 1
push 0
push ebx
push 0
call fcn.004b3f70
cmp eax, 1
je 0x45ed50
xor ebx, ebx
jmp 0x45efda
mov eax, dword [esp + 0x18]
xor edi, edi
mov ebx, dword [esp + 0x20]
dec eax
push edi
push 1
mov ecx, esi
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], 0
call fcn.00401600
mov esi, eax
mov dword [esp + 0x2c], edi
cmp dword [esp + 0x18], edi
jbe 0x45ee23
cmp byte [esp + 0x11], 0
je 0x45edce
test edi, edi
je 0x45edce
cmp byte [0x4f9a8b], 0
je 0x45ee60
cmp dword [0x4f9c80], 0
jne 0x45ee60
mov ecx, dword [ebx]
call fcn.00429a50
mov ecx, edi
movsd qword [esp + 0x40], xmm0
call fcn.00429a50
movsd xmm1, qword [esp + 0x40]
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x45eec3
mov ecx, dword [ebx]
movzx eax, word [ecx]
test ax, ax
je 0x45edf3
mov edx, eax
nop word [eax + eax]
add ecx, 2
mov word [esi], dx
add esi, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x45ede0
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x38]
jb 0x45ee04
cmp byte [esp + 0x10], 0
je 0x45ee0e
mov ecx, dword [esp + 0x14]
mov word [esi], cx
add esi, 2
mov edi, dword [ebx]
add ebx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x18]
jb 0x45ed81
push dword [esp + 0x20]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov ebx, dword [esp + 0x28]
xor eax, eax
add esp, 4
cmp byte [esp + 0xe], al
je 0x45ef44
cmp word [esi - 4], 0xd
jne 0x45ef0f
mov word [esi - 4], ax
cmp byte [ebx + 0x17], al
jne 0x45eee8
mov esi, dword [ebx + 0xc]
jmp 0x45eeea
cmp byte [0x4f9a8e], 0
mov eax, dword [ebx]
jne 0x45ee78
push edi
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
add esp, 8
jmp 0x45eebb
cmp byte [0x4f9a8e], 2
jne 0x45ee8b
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x45eebb
mov ecx, edi
nop dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45eeb6
test dx, dx
je 0x45eeb2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45eeb6
add eax, 4
add ecx, 4
test dx, dx
jne 0x45ee90
xor eax, eax
jmp 0x45eebb
sbb eax, eax
or eax, 1
test eax, eax
jne 0x45edce
inc dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x38]
jne 0x45ee10
cmp byte [esp + 0x10], 0
jne 0x45ee10
sub esi, 2
jmp 0x45ee10
mov esi, ebx
cmp byte [esi + 0x17], 1
jne 0x45ef05
test byte [esi + 0x15], 8
je 0x45eefd
mov ecx, esi
call fcn.00401460
add esi, 0xc
add dword [esi], 0xfffffffc
jmp 0x45ef47
mov esi, 0x4fdaf8
add dword [esi], 0xfffffffc
jmp 0x45ef47
mov word [esi - 2], ax
cmp byte [ebx + 0x17], al
jne 0x45ef1d
mov esi, dword [ebx + 0xc]
jmp 0x45ef1f
mov esi, ebx
cmp byte [esi + 0x17], 1
jne 0x45ef3a
test byte [esi + 0x15], 8
je 0x45ef32
mov ecx, esi
call fcn.00401460
add esi, 0xc
add dword [esi], 0xfffffffe
jmp 0x45ef47
mov esi, 0x4fdaf8
add dword [esi], 0xfffffffe
jmp 0x45ef47
mov word [esi], ax
cmp byte [esp + 0x11], 0
je 0x45efaa
cmp dword [esp + 0x28], 0
je 0x45efaa
push 0
push 1
mov ecx, ebx
call fcn.00401600
mov esi, eax
lea eax, [esi + 2]
mov cx, word [esi]
add esi, 2
test cx, cx
jne 0x45ef65
sub esi, eax
sar esi, 1
cmp byte [ebx + 0x17], cl
jne 0x45ef7e
mov edi, dword [ebx + 0xc]
jmp 0x45ef80
mov edi, ebx
cmp byte [edi + 0x17], 1
jne 0x45ef98
test byte [edi + 0x15], 8
je 0x45ef93
mov ecx, edi
call fcn.00401460
add edi, 0xc
jmp 0x45ef9d
mov edi, 0x4fdaf8
lea eax, [esi + esi]
mov dword [edi], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
cmp byte [ebx + 0x17], 0
jne 0x45efb3
mov ebx, dword [ebx + 0xc]
cmp byte [ebx + 0x17], 2
jne 0x45efd1
cmp dword [0x4fc6e4], 0
je 0x45efd1
push ecx
mov ecx, 0x4fc6d8
call fcn.004068c0
mov ebx, eax
jmp 0x45efda
and byte [ebx + 0x15], 0x86
mov ebx, 1
mov edi, dword [esp + 0x30]
cmp edi, 0xffffffff
je 0x45f038
mov esi, dword [0x4f99cc]
cmp byte [esi + 0x17], 0
jne 0x45eff2
mov esi, dword [esi + 0xc]
mov al, byte [esi + 0x15]
test al, 2
je 0x45f009
and al, 0x3d
mov byte [esi + 0x15], al
mov eax, dword [esi]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov al, byte [esi + 0x15]
and al, 0x8b
mov dword [esi], edi
or al, 0x18
mov dword [esi + 4], 0
mov byte [esi + 0x15], al
jge 0x45f028
mov ecx, esi
call fcn.00401460
and byte [esi + 0x15], 0x8f
jmp 0x45f038
cmp dword [0x4f99f4], 0
je 0x45f038
mov ecx, esi
call fcn.00401460
mov eax, dword [esp + 0x34]
test eax, eax
je 0x45f04a
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov eax, dword [esp + 0x3c]
pop edi
mov dword [0x4f9c7c], eax
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8