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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x4e99cc]
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 [0x4e99cc], 0
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x14], ebx
mov byte [0x4e9896], 0
mov byte [0x4e9893], 0
mov byte [0x4e9892], 0
mov dword [0x4e9a84], 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 0x44fc34
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.0x44fa75.69
movzx eax, byte [eax + 0x450258]
jmp dword [eax*4 + 0x450230]
movzx eax, word [esi + 2]
lea edi, [esi + 2]
mov ebx, eax
test eax, 0xffffff80
je 0x44fa90
xor edx, edx
jmp 0x44fa9e
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 [0x4e9896], al
cmovne edi, esi
mov esi, edi
jmp case.0x44fa75.69
movzx eax, word [esi + 2]
mov edx, eax
test ax, ax
je case.0x44fa75.69
mov ebx, edx
add esi, 2
mov dword [esp + 0x14], ebx
jmp 0x44fc22
lea edi, [esi + 2]
nop dword [eax]
movzx eax, word [edi]
cmp eax, 0x20
je 0x44fafd
cmp eax, 9
jne 0x44fb02
add edi, 2
jmp 0x44faf0
mov ebx, edi
test ax, ax
je 0x44fb41
mov esi, eax
nop dword [eax + eax]
mov ecx, 0x4d5394
mov edx, 0x20
nop word [eax + eax]
cmp si, dx
je 0x44fb58
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x44fb20
movzx eax, word [ebx + 2]
add ebx, 2
mov esi, eax
test ax, ax
jne 0x44fb10
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x44fb46
sub ecx, edx
sar ecx, 1
lea ebx, [edi + ecx*2]
mov eax, ebx
mov ecx, 0x4eb958
sub eax, edi
push 0
sar eax, 1
push eax
push edi
call fcn.0042eac0
mov ecx, eax
mov dword [0x4e99cc], ecx
test ecx, ecx
je 0x4501a5
cmp byte [ecx + 0x51], 0
jne 0x4501a5
mov eax, dword [ecx + 0x10]
sub eax, 2
cmp eax, 1
ja 0x4501a5
mov eax, dword [ecx + 0xc]
cmp word [eax + 4], 0
jne 0x4501a5
cmp word [eax + 0x14], 0
jne 0x4501a5
lea esi, [ebx - 2]
jmp case.0x44fa75.69
mov byte [0x4e9893], 1
jmp case.0x44fa75.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 [0x4e9a84], eax
jmp case.0x44fa75.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 0x44fbfa
mov byte [esp + 0xf], 1
add esi, 0xa
jmp 0x44fc22
mov byte [0x4e9892], 1
jmp 0x44fc22
mov byte [esp + 0x11], 1
mov dword [esp + 0x30], 0
jmp case.0x44fa75.69
mov byte [esp + 0x12], 1
jmp case.0x44fa75.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 0x44fa50
mov esi, dword [ebp + 8]
movzx edx, word [esi]
test dx, dx
je 0x4501a5
mov ecx, dword [0x4eaff0]
mov dword [esp + 0x24], ecx
mov al, byte [ecx + 0x17]
test al, al
jne 0x44fc5a
mov eax, dword [ecx + 0xc]
mov al, byte [eax + 0x17]
cmp al, 2
ja 0x4501a5
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 0x44fc70
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 0x44fccb
cmp ecx, esi
jbe 0x44fccb
cmp word [ecx - 2], ax
jne 0x44fccb
mov byte [esp + 0x10], 1
dec edi
mov cl, byte [esp + 0xe]
cmp edi, 1
jne 0x44fcf8
mov ecx, dword [esp + 0x24]
push edi
push 0
push ebx
push esi
call fcn.004a6070
mov ebx, eax
jmp 0x4501aa
cmp ax, 0xa
jne 0x44fcad
push 0xa
push esi
call dword [sym.imp.VCRUNTIME140.dll_wcschr]
add esp, 8
test eax, eax
je 0x44fcad
cmp eax, esi
jbe 0x44fcad
cmp word [eax - 2], 0xd
jne 0x44fcad
mov cl, 1
mov byte [esp + 0xe], cl
mov byte [esp + 0x10], cl
jmp 0x44fcb1
cmp dword [0x4e99cc], 0
jne 0x44fd05
test cl, cl
je 0x44fd74
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 0x44fd3b
mov ecx, dword [esp + 0x2c]
push 0x4bfba0
push eax
push str.Out_of_memory.
call fcn.0043e8b0
mov ebx, eax
jmp 0x4501aa
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 0x44fd74
mov eax, dword [0x4dc10c]
mov dword [ecx + ebx*2], eax
mov ax, word [0x4dc110]
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 0x44fdbb
mov ecx, dword [esp + 0x2c]
push 0x4bfba0
push eax
push str.Out_of_memory.
call fcn.0043e8b0
mov ebx, eax
jmp 0x4501aa
mov edx, dword [0x4ed0d0]
mov edi, eax
mov dword [eax], esi
movzx eax, word [esi]
mov dword [esp + 0x18], 0
test ax, ax
je 0x44fe5c
mov ecx, eax
xor ebx, ebx
nop dword [eax]
cmp cx, word [esp + 0x14]
jne 0x44fe46
xor eax, eax
inc ebx
mov word [esi], ax
cmp byte [esp + 0xf], al
je 0x44fe3d
sub dword [0x4e8a10], 1
jne 0x44fe07
call fcn.004214a0
mov edx, dword [0x4ed0d0]
mov ecx, dword [edx]
mov eax, ecx
shr eax, 0xb
add edx, 4
xor ecx, eax
mov dword [0x4ed0d0], 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 0x44fde0
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 0x44fec2
inc esi
mov dword [esp + 0x18], esi
test al, al
je 0x44fec2
sub dword [0x4e8a10], 1
jne 0x44fe88
call fcn.004214a0
mov edx, dword [0x4ed0d0]
mov ecx, dword [edx]
mov eax, ecx
shr eax, 0xb
add edx, 4
xor ecx, eax
mov dword [0x4ed0d0], 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 [0x4e99cc], 0
je 0x44fed2
push 0x44f7a0
jmp 0x44fef0
test al, al
je 0x44fedd
push 0x44f790
jmp 0x44fef0
cmp byte [esp + 0x13], 0
mov eax, 0x44f5e0
mov ecx, 0x44f6f0
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.004a6070
cmp eax, 1
je 0x44ff20
xor ebx, ebx
jmp 0x4501aa
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.00401520
mov esi, eax
mov dword [esp + 0x2c], edi
cmp dword [esp + 0x18], edi
jbe 0x44fff3
cmp byte [esp + 0x11], 0
je 0x44ff9e
test edi, edi
je 0x44ff9e
cmp byte [0x4e9893], 0
je 0x450030
cmp dword [0x4e9a84], 0
jne 0x450030
mov ecx, dword [ebx]
call fcn.004218d0
mov ecx, edi
movsd qword [esp + 0x40], xmm0
call fcn.004218d0
movsd xmm1, qword [esp + 0x40]
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x450093
mov ecx, dword [ebx]
movzx eax, word [ecx]
test ax, ax
je 0x44ffc3
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 0x44ffb0
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x38]
jb 0x44ffd4
cmp byte [esp + 0x10], 0
je 0x44ffde
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 0x44ff51
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 0x450114
cmp word [esi - 4], 0xd
jne 0x4500df
mov word [esi - 4], ax
cmp byte [ebx + 0x17], al
jne 0x4500b8
mov esi, dword [ebx + 0xc]
jmp 0x4500ba
cmp byte [0x4e9896], 0
mov eax, dword [ebx]
jne 0x450048
push edi
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
add esp, 8
jmp 0x45008b
cmp byte [0x4e9896], 2
jne 0x45005b
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x45008b
mov ecx, edi
nop dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x450086
test dx, dx
je 0x450082
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x450086
add eax, 4
add ecx, 4
test dx, dx
jne 0x450060
xor eax, eax
jmp 0x45008b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x44ff9e
inc dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x38]
jne 0x44ffe0
cmp byte [esp + 0x10], 0
jne 0x44ffe0
sub esi, 2
jmp 0x44ffe0
mov esi, ebx
cmp byte [esi + 0x17], 1
jne 0x4500d5
test byte [esi + 0x15], 8
je 0x4500cd
mov ecx, esi
call fcn.00401380
add esi, 0xc
add dword [esi], 0xfffffffc
jmp 0x450117
mov esi, 0x4ed8c4
add dword [esi], 0xfffffffc
jmp 0x450117
mov word [esi - 2], ax
cmp byte [ebx + 0x17], al
jne 0x4500ed
mov esi, dword [ebx + 0xc]
jmp 0x4500ef
mov esi, ebx
cmp byte [esi + 0x17], 1
jne 0x45010a
test byte [esi + 0x15], 8
je 0x450102
mov ecx, esi
call fcn.00401380
add esi, 0xc
add dword [esi], 0xfffffffe
jmp 0x450117
mov esi, 0x4ed8c4
add dword [esi], 0xfffffffe
jmp 0x450117
mov word [esi], ax
cmp byte [esp + 0x11], 0
je 0x45017a
cmp dword [esp + 0x28], 0
je 0x45017a
push 0
push 1
mov ecx, ebx
call fcn.00401520
mov esi, eax
lea eax, [esi + 2]
mov cx, word [esi]
add esi, 2
test cx, cx
jne 0x450135
sub esi, eax
sar esi, 1
cmp byte [ebx + 0x17], cl
jne 0x45014e
mov edi, dword [ebx + 0xc]
jmp 0x450150
mov edi, ebx
cmp byte [edi + 0x17], 1
jne 0x450168
test byte [edi + 0x15], 8
je 0x450163
mov ecx, edi
call fcn.00401380
add edi, 0xc
jmp 0x45016d
mov edi, 0x4ed8c4
lea eax, [esi + esi]
mov dword [edi], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
cmp byte [ebx + 0x17], 0
jne 0x450183
mov ebx, dword [ebx + 0xc]
cmp byte [ebx + 0x17], 2
jne 0x4501a1
cmp dword [0x4ec4bc], 0
je 0x4501a1
push ecx
mov ecx, 0x4ec4b0
call fcn.00405c70
mov ebx, eax
jmp 0x4501aa
and byte [ebx + 0x15], 0x86
mov ebx, 1
mov edi, dword [esp + 0x30]
cmp edi, 0xffffffff
je 0x450208
mov esi, dword [0x4e97d8]
cmp byte [esi + 0x17], 0
jne 0x4501c2
mov esi, dword [esi + 0xc]
mov al, byte [esi + 0x15]
test al, 2
je 0x4501d9
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 0x4501f8
mov ecx, esi
call fcn.00401380
and byte [esi + 0x15], 0x8f
jmp 0x450208
cmp dword [0x4e9800], 0
je 0x450208
mov ecx, esi
call fcn.00401380
mov eax, dword [esp + 0x34]
test eax, eax
je 0x45021a
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 [0x4e99cc], eax
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8