Function at 0x4015c8
Capabilities:
Get common file path
Get number of processors

Disassembly:
jmp 0x40cab0
push 0xffffffffffffffff
push 0x44ea1b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x494
push ebx
push ebp
push esi
push edi
lea ecx, [esp + 0x30]
call fcn.0044cd0e
lea eax, [esp + 0x40]
xor ebx, ebx
push eax
push 0x64
mov dword [esp + 0x4b4], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, 0x460f1c
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
mov edx, dword [esp + 0x4c0]
and ecx, 3
lea ebp, [esp + 0x44]
rep movsb byte es:[edi], byte [esi]
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov esi, edi
mov edi, ebp
mov ebp, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
push edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x3c]
call sub.MFC42.DLL_CFile::Open
test eax, eax
jne 0x40cb66
mov byte [0x45e640], al
jmp 0x40cd4c
lea eax, [esp + 0xa4]
push 0x400
push eax
lea ecx, [esp + 0x38]
xor esi, esi
mov dword [esp + 0x24], ebx
call sub.MFC42.DLL_CFile::Read
mov edi, eax
lea ecx, [esp + 0x30]
mov dword [esp + 0x18], edi
call sub.MFC42.DLL_CFile::Close
mov eax, dword [esp + 0x4c0]
cmp eax, 4
ja case.default.0x40cb9d
jmp dword [eax*4 + 0x40cd7c]
mov ecx, dword [esp + 0x4b4]
mov dword [esp + 0x14], ecx
jmp case.default.0x40cb9d
mov edx, dword [esp + 0x4b4]
mov dword [esp + 0x14], edx
jmp case.default.0x40cb9d
mov eax, dword [esp + 0x4b4]
mov dword [esp + 0x10], eax
jmp case.default.0x40cb9d
mov ecx, dword [esp + 0x4b4]
mov dword [esp + 0x10], ecx
jmp case.default.0x40cb9d
mov edx, dword [esp + 0x4b4]
mov dword [esp + 0x10], edx
lea eax, [edi - 1]
cmp eax, ebx
jle 0x40cd4c
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
mov edi, dword [sym.imp.MSVCRT.dll_strtoul]
sub eax, ebx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
sub eax, ebp
mov dword [esp + 0x14], eax
mov al, byte [esp + esi + 0xa4]
cmp al, 0x30
jl 0x40cc27
cmp al, 0x39
jle 0x40cc50
cmp al, 0x41
jl 0x40cc2f
cmp al, 0x46
jle 0x40cc50
cmp al, 0x61
jl 0x40cc37
cmp al, 0x66
jle 0x40cc50
cmp al, 0x78
je 0x40cc50
cmp al, 0x58
je 0x40cc50
cmp al, 0x2d
je 0x40cc50
cmp al, 0x2b
je 0x40cc50
cmp esi, dword [esp + 0x18]
jge 0x40cc50
inc esi
jmp 0x40cc18
mov edx, dword [esp + 0x18]
xor ecx, ecx
mov al, byte [esp + esi + 0xa4]
cmp al, 0x30
jl 0x40cc65
cmp al, 0x39
jle 0x40cc85
cmp al, 0x41
jl 0x40cc6d
cmp al, 0x46
jle 0x40cc85
cmp al, 0x61
jl 0x40cc75
cmp al, 0x66
jle 0x40cc85
cmp al, 0x78
je 0x40cc85
cmp al, 0x58
je 0x40cc85
cmp al, 0x2d
je 0x40cc85
cmp al, 0x2b
jne 0x40cc91
cmp esi, edx
jge 0x40cc91
mov byte [esp + ecx + 0x20], al
inc ecx
inc esi
jmp 0x40cc56
mov eax, dword [esp + 0x4b8]
mov byte [esp + ecx + 0x20], 0
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
jge 0x40cd4c
mov eax, dword [esp + 0x4c0]
cmp eax, 4
ja case.default.0x40ccb5
jmp dword [eax*4 + 0x40cd90]
push 0
lea edx, [esp + 0x24]
push 0
push edx
call edi
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov byte [ecx + ebp], al
jmp case.default.0x40ccb5
push 0
lea edx, [esp + 0x24]
push 0
push edx
call edi
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov word [ecx + ebx], ax
jmp case.default.0x40ccb5
push 0
lea edx, [esp + 0x24]
push 0
push edx
call edi
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov dword [ecx], eax
jmp case.default.0x40ccb5
push 0
lea edx, [esp + 0x24]
push 0
push edx
call edi
add esp, 0xc
mov byte [ebp], al
jmp case.default.0x40ccb5
push 0
lea eax, [esp + 0x24]
push 0
push eax
call edi
add esp, 0xc
mov word [ebx], ax
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
add ecx, 4
inc edx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x18]
inc ebp
add ebx, 2
lea eax, [ecx - 1]
mov dword [esp + 0x1c], edx
cmp esi, eax
jl 0x40cc18
lea ecx, [esp + 0x30]
mov dword [esp + 0x4ac], 0xffffffff
call sub.MFC42.DLL_CFile::CFile
mov ecx, dword [esp + 0x4a4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x4a0
ret