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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x4e9ac4]
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 [0x4e9ac4], 0
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x14], ebx
mov byte [0x4e98b6], 0
mov byte [0x4e98b3], 0
mov byte [0x4e98b2], 0
mov dword [0x4e9ac8], 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 0x44fb34
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.0x44f975.69
movzx eax, byte [eax + 0x450158]
jmp dword [eax*4 + 0x450130]
movzx eax, word [esi + 2]
lea edi, [esi + 2]
mov ebx, eax
test eax, 0xffffff80
je 0x44f990
xor edx, edx
jmp 0x44f99e
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 [0x4e98b6], al
cmovne edi, esi
mov esi, edi
jmp case.0x44f975.69
movzx eax, word [esi + 2]
mov edx, eax
test ax, ax
je case.0x44f975.69
mov ebx, edx
add esi, 2
mov dword [esp + 0x14], ebx
jmp 0x44fb22
lea edi, [esi + 2]
nop dword [eax]
movzx eax, word [edi]
cmp eax, 0x20
je 0x44f9fd
cmp eax, 9
jne 0x44fa02
add edi, 2
jmp 0x44f9f0
mov ebx, edi
test ax, ax
je 0x44fa41
mov esi, eax
nop dword [eax + eax]
mov ecx, 0x4d5384
mov edx, 0x20
nop word [eax + eax]
cmp si, dx
je 0x44fa58
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x44fa20
movzx eax, word [ebx + 2]
add ebx, 2
mov esi, eax
test ax, ax
jne 0x44fa10
mov ecx, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x44fa46
sub ecx, edx
sar ecx, 1
lea ebx, [edi + ecx*2]
mov eax, ebx
mov ecx, 0x4eb990
sub eax, edi
push 0
sar eax, 1
push eax
push edi
call fcn.0042ea80
mov ecx, eax
mov dword [0x4e9ac4], ecx
test ecx, ecx
je 0x4500a5
cmp byte [ecx + 0x51], 0
jne 0x4500a5
mov eax, dword [ecx + 0x10]
sub eax, 2
cmp eax, 1
ja 0x4500a5
mov eax, dword [ecx + 0xc]
cmp word [eax + 4], 0
jne 0x4500a5
cmp word [eax + 0x14], 0
jne 0x4500a5
lea esi, [ebx - 2]
jmp case.0x44f975.69
mov byte [0x4e98b3], 1
jmp case.0x44f975.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 [0x4e9ac8], eax
jmp case.0x44f975.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 0x44fafa
mov byte [esp + 0xf], 1
add esi, 0xa
jmp 0x44fb22
mov byte [0x4e98b2], 1
jmp 0x44fb22
mov byte [esp + 0x11], 1
mov dword [esp + 0x30], 0
jmp case.0x44f975.69
mov byte [esp + 0x12], 1
jmp case.0x44f975.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 0x44f950
mov esi, dword [ebp + 8]
movzx edx, word [esi]
test dx, dx
je 0x4500a5
mov ecx, dword [0x4eb028]
mov dword [esp + 0x24], ecx
mov al, byte [ecx + 0x17]
test al, al
jne 0x44fb5a
mov eax, dword [ecx + 0xc]
mov al, byte [eax + 0x17]
cmp al, 2
ja 0x4500a5
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 0x44fb70
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 0x44fbcb
cmp ecx, esi
jbe 0x44fbcb
cmp word [ecx - 2], ax
jne 0x44fbcb
mov byte [esp + 0x10], 1
dec edi
mov cl, byte [esp + 0xe]
cmp edi, 1
jne 0x44fbf8
mov ecx, dword [esp + 0x24]
push edi
push 0
push ebx
push esi
call fcn.004a5f40
mov ebx, eax
jmp 0x4500aa
cmp ax, 0xa
jne 0x44fbad
push 0xa
push esi
call dword [sym.imp.VCRUNTIME140.dll_wcschr]
add esp, 8
test eax, eax
je 0x44fbad
cmp eax, esi
jbe 0x44fbad
cmp word [eax - 2], 0xd
jne 0x44fbad
mov cl, 1
mov byte [esp + 0xe], cl
mov byte [esp + 0x10], cl
jmp 0x44fbb1
cmp dword [0x4e9ac4], 0
jne 0x44fc05
test cl, cl
je 0x44fc74
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 0x44fc3b
mov ecx, dword [esp + 0x2c]
push 0x4bfb90
push eax
push str.Out_of_memory.
call fcn.0043e770
mov ebx, eax
jmp 0x4500aa
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 0x44fc74
mov eax, dword [0x4dc0fc]
mov dword [ecx + ebx*2], eax
mov ax, word [0x4dc100]
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 0x44fcbb
mov ecx, dword [esp + 0x2c]
push 0x4bfb90
push eax
push str.Out_of_memory.
call fcn.0043e770
mov ebx, eax
jmp 0x4500aa
mov edx, dword [0x4ed108]
mov edi, eax
mov dword [eax], esi
movzx eax, word [esi]
mov dword [esp + 0x18], 0
test ax, ax
je 0x44fd5c
mov ecx, eax
xor ebx, ebx
nop dword [eax]
cmp cx, word [esp + 0x14]
jne 0x44fd46
xor eax, eax
inc ebx
mov word [esi], ax
cmp byte [esp + 0xf], al
je 0x44fd3d
sub dword [0x4e8a30], 1
jne 0x44fd07
call fcn.004214f0
mov edx, dword [0x4ed108]
mov ecx, dword [edx]
mov eax, ecx
shr eax, 0xb
add edx, 4
xor ecx, eax
mov dword [0x4ed108], 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 0x44fce0
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 0x44fdc2
inc esi
mov dword [esp + 0x18], esi
test al, al
je 0x44fdc2
sub dword [0x4e8a30], 1
jne 0x44fd88
call fcn.004214f0
mov edx, dword [0x4ed108]
mov ecx, dword [edx]
mov eax, ecx
shr eax, 0xb
add edx, 4
xor ecx, eax
mov dword [0x4ed108], 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 [0x4e9ac4], 0
je 0x44fdd2
push 0x44f6a0
jmp 0x44fdf0
test al, al
je 0x44fddd
push 0x44f690
jmp 0x44fdf0
cmp byte [esp + 0x13], 0
mov eax, 0x44f4e0
mov ecx, 0x44f5f0
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.004a5f40
cmp eax, 1
je 0x44fe20
xor ebx, ebx
jmp 0x4500aa
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.004014f0
mov esi, eax
mov dword [esp + 0x2c], edi
cmp dword [esp + 0x18], edi
jbe 0x44fef3
cmp byte [esp + 0x11], 0
je 0x44fe9e
test edi, edi
je 0x44fe9e
cmp byte [0x4e98b3], 0
je 0x44ff30
cmp dword [0x4e9ac8], 0
jne 0x44ff30
mov ecx, dword [ebx]
call fcn.00421920
mov ecx, edi
movsd qword [esp + 0x40], xmm0
call fcn.00421920
movsd xmm1, qword [esp + 0x40]
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x44ff93
mov ecx, dword [ebx]
movzx eax, word [ecx]
test ax, ax
je 0x44fec3
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 0x44feb0
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x38]
jb 0x44fed4
cmp byte [esp + 0x10], 0
je 0x44fede
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 0x44fe51
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 0x450014
cmp word [esi - 4], 0xd
jne 0x44ffdf
mov word [esi - 4], ax
cmp byte [ebx + 0x17], al
jne 0x44ffb8
mov esi, dword [ebx + 0xc]
jmp 0x44ffba
cmp byte [0x4e98b6], 0
mov eax, dword [ebx]
jne 0x44ff48
push edi
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
add esp, 8
jmp 0x44ff8b
cmp byte [0x4e98b6], 2
jne 0x44ff5b
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x44ff8b
mov ecx, edi
nop dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x44ff86
test dx, dx
je 0x44ff82
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x44ff86
add eax, 4
add ecx, 4
test dx, dx
jne 0x44ff60
xor eax, eax
jmp 0x44ff8b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x44fe9e
inc dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x38]
jne 0x44fee0
cmp byte [esp + 0x10], 0
jne 0x44fee0
sub esi, 2
jmp 0x44fee0
mov esi, ebx
cmp byte [esi + 0x17], 1
jne 0x44ffd5
test byte [esi + 0x15], 8
je 0x44ffcd
mov ecx, esi
call fcn.00401350
add esi, 0xc
add dword [esi], 0xfffffffc
jmp 0x450017
mov esi, 0x4ed8fc
add dword [esi], 0xfffffffc
jmp 0x450017
mov word [esi - 2], ax
cmp byte [ebx + 0x17], al
jne 0x44ffed
mov esi, dword [ebx + 0xc]
jmp 0x44ffef
mov esi, ebx
cmp byte [esi + 0x17], 1
jne 0x45000a
test byte [esi + 0x15], 8
je 0x450002
mov ecx, esi
call fcn.00401350
add esi, 0xc
add dword [esi], 0xfffffffe
jmp 0x450017
mov esi, 0x4ed8fc
add dword [esi], 0xfffffffe
jmp 0x450017
mov word [esi], ax
cmp byte [esp + 0x11], 0
je 0x45007a
cmp dword [esp + 0x28], 0
je 0x45007a
push 0
push 1
mov ecx, ebx
call fcn.004014f0
mov esi, eax
lea eax, [esi + 2]
mov cx, word [esi]
add esi, 2
test cx, cx
jne 0x450035
sub esi, eax
sar esi, 1
cmp byte [ebx + 0x17], cl
jne 0x45004e
mov edi, dword [ebx + 0xc]
jmp 0x450050
mov edi, ebx
cmp byte [edi + 0x17], 1
jne 0x450068
test byte [edi + 0x15], 8
je 0x450063
mov ecx, edi
call fcn.00401350
add edi, 0xc
jmp 0x45006d
mov edi, 0x4ed8fc
lea eax, [esi + esi]
mov dword [edi], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
cmp byte [ebx + 0x17], 0
jne 0x450083
mov ebx, dword [ebx + 0xc]
cmp byte [ebx + 0x17], 2
jne 0x4500a1
cmp dword [0x4ec4f4], 0
je 0x4500a1
push ecx
mov ecx, 0x4ec4e8
call fcn.00405c10
mov ebx, eax
jmp 0x4500aa
and byte [ebx + 0x15], 0x86
mov ebx, 1
mov edi, dword [esp + 0x30]
cmp edi, 0xffffffff
je 0x450108
mov esi, dword [0x4e97f8]
cmp byte [esi + 0x17], 0
jne 0x4500c2
mov esi, dword [esi + 0xc]
mov al, byte [esi + 0x15]
test al, 2
je 0x4500d9
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 0x4500f8
mov ecx, esi
call fcn.00401350
and byte [esi + 0x15], 0x8f
jmp 0x450108
cmp dword [0x4e9820], 0
je 0x450108
mov ecx, esi
call fcn.00401350
mov eax, dword [esp + 0x34]
test eax, eax
je 0x45011a
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 [0x4e9ac4], eax
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8