Function at 0x405ae0
Capabilities:
Check os version
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x473878
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x5c
push ebx
push ebp
mov ebx, ecx
push esi
push edi
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0xd0]
mov esi, 0x64
mov ebp, dword [esp + 0xb8]
mov dword [esp + 0x34], eax
sub esi, eax
mov eax, 0x64
xor edi, edi
sub eax, ecx
mov dword [esp + 0x74], edi
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x10c]
cmp eax, edi
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x10], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], esi
mov dword [esp + 0x44], ecx
jle 0x405b9c
mov eax, dword [ebx + 0x108]
lea edx, [esp + 0x54]
push edx
lea eax, [eax + edi*4]
mov eax, dword [eax]
mov ecx, dword [eax - 8]
push ecx
push eax
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 8]
push ecx
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32A]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x24]
cmp ecx, eax
jge 0x405b8f
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x10c]
inc edi
cmp edi, eax
jl 0x405b59
xor edi, edi
mov eax, dword [ebx + 0x10c]
mov dword [esp + 0x20], edi
cmp eax, edi
jle 0x4061c9
mov edx, dword [esp + 0x20]
mov eax, dword [ebx + 0x108]
lea ecx, [edx*4]
lea edx, [esp + 0x54]
add eax, ecx
push edx
mov eax, dword [eax]
mov ecx, dword [eax - 8]
push ecx
push eax
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 8]
push ecx
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32A]
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
test edi, edi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], eax
jne 0x405bf6
test eax, eax
je 0x405c23
mov edx, dword [esp + 0x8c]
lea ecx, [edi + 3]
mov dword [esp + 0x48], ecx
lea eax, [edx + edx]
mov edx, dword [esp + 0x24]
lea edx, [eax + edx + 3]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x4c]
add edx, eax
mov dword [esp + 0x50], edx
jmp 0x405c27
mov ecx, dword [esp + 0x48]
cmp ebp, 1
je 0x405c36
cmp ebp, 4
je 0x405c36
cmp ebp, 7
jne 0x405c4c
mov eax, edi
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x10], eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x30], eax
cmp ebp, 2
je 0x405c5b
cmp ebp, 5
je 0x405c5b
cmp ebp, 8
jne 0x405c63
mov dword [esp + 0x10], edi
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x50]
imul eax, edi
shl eax, 2
push eax
call fcn.0045cc2f
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xf0]
add esp, 4
test eax, eax
je 0x406194
mov ecx, dword [esp + 0x84]
xor ebx, ebx
mov ebp, dword [ecx]
mov ecx, dword [esp + 0x10]
sub ebp, ecx
lea edx, [edi + ebp]
cmp ebp, edx
jge 0x405cfc
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x50]
mov eax, dword [eax]
add ecx, eax
mov edi, eax
cmp edi, ecx
jge 0x405ce2
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x14]
push edi
push ebp
push edx
call fcn.00405610
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x88]
mov dword [ecx + ebx*4], eax
mov eax, dword [edx]
mov ecx, dword [esp + 0x50]
inc ebx
inc edi
add ecx, eax
cmp edi, ecx
jl 0x405cb6
mov edx, dword [esp + 0x84]
mov edi, dword [esp + 0x10]
inc ebp
mov edx, dword [edx]
sub edx, edi
mov edi, dword [esp + 0x4c]
add edx, edi
cmp ebp, edx
jl 0x405cb0
mov eax, dword [esp + 0x88]
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov ecx, dword [eax]
mov eax, dword [esp + 0x84]
add edx, ecx
mov dword [esp + 0x60], ecx
mov eax, dword [eax]
mov dword [esp + 0x68], edx
sub eax, ebp
mov dword [esp + 0x5c], eax
lea ebx, [eax + edi]
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0xe0]
test ebx, ebx
jne 0x405d52
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x5c]
add ecx, 0x15c
push edx
push 1
mov eax, dword [ecx + 8]
push eax
call fcn.00406910
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x405e40
test ebx, ebx
je 0x405e40
mov ecx, dword [esp + 0xe4]
lea edx, [esp + 0x5c]
push edx
push 1
mov eax, dword [ecx + 8]
push eax
call fcn.00406910
mov eax, dword [ebx + 4]
test eax, eax
jne 0x405d8d
mov dword [esp + 0x40], eax
jmp 0x405d99
mov ecx, dword [ebx + 8]
sub ecx, eax
sar ecx, 2
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xe8]
lea edx, [esp + 0x40]
push edx
push 1
mov eax, dword [ecx + 8]
push eax
call fcn.00402650
mov eax, dword [esp + 0x84]
mov dword [esp + 0x28], 0
mov eax, dword [eax]
sub eax, ebp
mov edx, eax
add eax, edi
cmp edx, eax
mov dword [esp + 0x18], edx
jge 0x405e40
mov ecx, dword [esp + 0x88]
mov eax, dword [ecx]
mov ecx, dword [esp + 0x50]
add ecx, eax
mov edi, eax
cmp edi, ecx
jge 0x405e22
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
lea ebp, [edx + eax*4]
mov eax, dword [ebx + 8]
push ebp
push 1
push eax
mov ecx, ebx
call fcn.00402650
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x88]
inc edx
add ebp, 4
mov eax, dword [ecx]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x50]
inc edi
lea ecx, [eax + edx]
cmp edi, ecx
jl 0x405def
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x84]
mov ebp, dword [esp + 0x10]
inc edx
mov edi, dword [edi]
mov dword [esp + 0x18], edx
sub edi, ebp
mov ebp, dword [esp + 0x4c]
add edi, ebp
cmp edx, edi
jl 0x405dde
mov eax, dword [esp + 0xc8]
test eax, eax
je 0x405fb9
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
xor ebp, ebp
mov eax, dword [eax]
sub eax, edx
mov edx, eax
add eax, ecx
cmp edx, eax
mov dword [esp + 0x18], edx
jge 0x405fb9
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x50]
mov eax, dword [eax]
add ecx, eax
mov edi, eax
cmp edi, ecx
jge 0x405f97
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0xcc]
mov esi, dword [esp + 0x44]
mov eax, ebx
mov ecx, dword [edx + ebp*4]
mov edx, ecx
shr edx, 0x10
shr eax, 0x10
and edx, 0xff
and eax, 0xff
imul edx, dword [esp + 0x2c]
imul eax, esi
add edx, eax
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
xor eax, eax
mov ah, dl
xor edx, edx
mov dl, bh
xor ebx, ebx
mov bl, ch
and edx, 0xff
and ebx, 0xff
imul edx, esi
imul ebx, dword [esp + 0x2c]
add edx, ebx
mov dword [esp + 0x28], eax
mov esi, edx
mov eax, 0x51eb851f
imul esi
mov esi, edx
and ecx, 0xff
sar esi, 5
imul ecx, dword [esp + 0x2c]
mov eax, esi
mov edx, esi
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x28]
mov al, dl
shl eax, 8
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xcc]
and eax, 0xff
imul eax, dword [esp + 0x44]
add eax, ecx
mov ecx, dword [esp + 0x1c]
mov esi, eax
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x28]
and edx, 0xff
or eax, edx
mov edx, dword [esp + 0x18]
mov dword [ecx + ebp*4], eax
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x80]
push edi
push edx
push eax
call fcn.00405650
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x50]
inc ebp
inc edi
mov eax, dword [ecx]
lea ecx, [eax + edx]
cmp edi, ecx
jl 0x405e8d
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x10]
inc edx
mov edi, dword [edi]
mov dword [esp + 0x18], edx
sub edi, ebx
mov ebx, dword [esp + 0x4c]
add edi, ebx
cmp edx, edi
jl 0x405e83
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x8c]
cmp eax, 2
mov edi, ebx
je 0x405fd5
cmp eax, 5
je 0x405fd5
cmp eax, 8
jne 0x405fd9
mov edi, ebx
neg edi
cmp eax, 1
je 0x405fe8
cmp eax, 4
je 0x405fe8
cmp eax, 7
jne 0x405fea
xor edi, edi
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
mov ebp, dword [esp + 0x30]
mov ecx, dword [eax + 0x108]
lea eax, [edx*4]
add ecx, eax
mov eax, dword [esp + 0x88]
mov edx, dword [eax]
mov ecx, dword [ecx]
add edx, ebx
mov ebx, dword [esp + 0x84]
mov eax, dword [ebx]
sub eax, ebp
mov ebp, dword [esp + 0x7c]
add eax, edi
mov edi, dword [ecx - 8]
mov ebp, dword [ebp]
push edi
push ecx
mov ecx, dword [esp + 0x84]
push edx
push eax
call dword [ebp + 0x5c]
mov ebp, dword [ebx]
mov ecx, dword [esp + 0x10]
sub ebp, ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x28], 0
lea edx, [ecx + ebp]
cmp ebp, edx
jge 0x40618c
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x50]
mov edi, dword [eax]
lea edx, [edi + ecx]
cmp edi, edx
jge 0x40616e
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x14]
push edi
push ebp
push eax
call fcn.00405610
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x18], eax
mov ecx, dword [ecx + edx*4]
cmp eax, ecx
je 0x40614d
mov edx, ecx
xor ebx, ebx
shr edx, 0x10
shr eax, 0x10
and edx, 0xff
and eax, 0xff
imul eax, dword [esp + 0x34]
imul edx, esi
add edx, eax
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
xor eax, eax
mov al, byte [esp + 0x19]
mov bh, dl
xor edx, edx
and eax, 0xff
imul eax, dword [esp + 0x34]
mov dl, ch
and ecx, 0xff
and edx, 0xff
imul ecx, dword [esp + 0x38]
imul edx, esi
add edx, eax
mov eax, 0x51eb851f
mov esi, edx
imul esi
mov esi, edx
sar esi, 5
mov edx, esi
mov eax, esi
shr edx, 0x1f
add eax, edx
mov bl, al
mov eax, dword [esp + 0x18]
and eax, 0xff
imul eax, dword [esp + 0x34]
add ecx, eax
mov eax, 0x51eb851f
mov esi, ecx
imul esi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esp + 0x14]
shl ebx, 8
and edx, 0xff
or ebx, edx
mov edx, dword [esp + 0x7c]
push ebx
push edi
push ebp
push edx
call fcn.00405650
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x50]
inc eax
inc edi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x88]
mov ecx, dword [eax]
add ecx, edx
cmp edi, ecx
jl 0x40606e
mov edx, dword [esp + 0x84]
mov edi, dword [esp + 0x10]
inc ebp
mov eax, dword [edx]
mov edx, dword [esp + 0x4c]
sub eax, edi
add eax, edx
cmp ebp, eax
jl 0x406056
mov ebp, dword [esp + 0x3c]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x50]
mov edx, dword [eax]
add edx, ecx
mov dword [eax], edx
mov edx, dword [esp + 0x1c]
push edx
call fcn.0045cc58
mov eax, dword [esp + 0x24]
mov ecx, dword [ebx + 0x10c]
add esp, 4
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x405bae
lea ecx, [esp + 0xc0]
mov dword [esp + 0x74], 4
call fcn.0045c6d0
lea ecx, [esp + 0xa4]
mov byte [esp + 0x74], 3
call fcn.0045c6d0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x74], 2
call fcn.0045c6d0
lea ecx, [esp + 0x98]
mov byte [esp + 0x74], 1
call fcn.0045c6d0
lea ecx, [esp + 0x94]
mov dword [esp + 0x74], 0xffffffff
call fcn.0045c6d0
mov ecx, dword [esp + 0x6c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x68
ret 0x74