Function at 0x4037e0
Capabilities:
Get common file path
Get number of processors
Resolve function by parsing pe exports
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x2cac
call fcn.00425210
mov eax, dword [0x4a92d0]
push ebx
inc eax
cmp eax, 0x30
push esi
push edi
mov dword [0x4a92d0], eax
jge 0x42b86e
mov edi, dword [ebp + 0xc]
mov bl, 1
lea eax, [esp + 0x28]
mov dword [esp + 0x14], 0
mov byte [esp + 0x10], 1
mov byte [esp + 0x13], bl
mov byte [esp + 0x11], 0
call fcn.0040d940
lea esi, [esp + 0x18]
call fcn.00401b70
push esi
mov eax, 0x2000
lea ecx, [esp + 0x2c]
call fcn.0040dfa0
test al, al
je 0x42b895
mov byte [esp + 0x12], 0
lea ecx, [esp + 0x18]
call fcn.00402620
cmp byte [esp + 0x12], 0
jne 0x42b89f
lea ecx, [esp + 0x698]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0x74]
push eax
push 0x104
push edi
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
lea ecx, [esp + 0x28a8]
push ecx
lea edx, [esp + 0x2ab4]
push edx
lea eax, [esp + 0x498]
push eax
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x80]
push edx
call fcn.00413db0
add esp, 0x14
lea eax, [esp + 0x64]
push eax
lea ecx, [esp + 0x284]
push ecx
call fcn.00411691
lea edx, [esp + 0x498]
push edx
lea eax, [esp + 0x28c]
push eax
call fcn.00411663
add esp, 0x10
lea ecx, [esp + 0x280]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmp bl, 1
jne 0x42b9cc
xor edx, edx
lea esi, [esp + 0x40]
mov word [esp + 0x8a8], dx
call fcn.00403770
mov al, byte [esp + 0x54]
test al, 3
jne 0x42b8ef
test al, 4
jne 0x42b8d0
xor ebx, ebx
push 0x10
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], 0x10
call fcn.0041171a
add esp, 4
push 4
mov dword [esp + 0x1c], eax
mov byte [eax], bl
call fcn.0041171a
add esp, 4
cmp eax, ebx
je 0x42b8e6
mov dword [eax], 1
mov dword [esp + 0x24], eax
lea edi, [esp + 0x18]
lea eax, [esp + 0x28]
call fcn.00403bd0
test al, al
je 0x403b58
lea edx, [esp + 0x40]
push edx
mov eax, edi
call fcn.00403f40
mov esi, dword [esp + 0x24]
add dword [esi], 0xffffffff
jne 0x40399c
mov eax, dword [esp + 0x18]
push eax
call fcn.004112ef
add esp, 4
push esi
call fcn.004112ef
add esp, 4
mov al, 1
test al, al
je 0x403b68
mov eax, dword [esp + 0x44]
cmp eax, 0xffe
ja 0x42b905
mov eax, dword [esp + 0x40]
push eax
lea ecx, [esp + 0x8ac]
push ecx
call fcn.00411691
inc dword [esp + 0x1c]
add esp, 8
xor esi, esi
xor edi, edi
movzx ebx, word [esp + esi*2 + 0x8a8]
push ebx
call fcn.004134ef
add esp, 4
test eax, eax
je 0x4039f8
push ebx
call fcn.004134c6
add esp, 4
test eax, eax
jne 0x403b42
cmp word [esp + esi*2 + 0x8a8], 0
je 0x403a2d
jmp 0x403a10
mov dx, word [esp + esi*2 + 0x8a8]
mov word [esp + edi*2 + 0x8a8], dx
inc esi
inc edi
cmp word [esp + esi*2 + 0x8a8], 0
jne 0x403a10
xor eax, eax
mov word [esp + edi*2 + 0x8a8], ax
lea eax, [esp + 0x8a8]
call fcn.00403dd0
lea ecx, [esp + 0x8a8]
push ecx
test al, al
je 0x42b9b0
call fcn.004112d5
add esp, 4
test eax, eax
je 0x403aa0
lea esi, [eax - 1]
test esi, esi
jl 0x403a96
jmp 0x403a70
movzx edi, word [esp + esi*2 + 0x8a8]
push edi
call fcn.004134ef
add esp, 4
test eax, eax
je 0x403a96
push edi
call fcn.004134c6
add esp, 4
test eax, eax
jne 0x42b945
xor edx, edx
mov word [esp + esi*2 + 0x8aa], dx
lea eax, [esp + 0x8a8]
push eax
xor bl, bl
call fcn.004112d5
add esp, 4
cmp eax, 2
jle 0x403ad5
mov esi, eax
mov cx, word [esp + esi*2 + 0x8a4]
and cx, 0x7f
movzx edx, cx
push edx
call fcn.004134c6
add esp, 4
test eax, eax
jne 0x403b48
cmp byte [esp + 0x11], 1
je 0x42b966
mov esi, dword [ebp + 8]
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0x8b4]
push eax
mov ecx, esi
call fcn.00403e50
cmp eax, 3
jne 0x42b97c
mov ecx, dword [ebp + 0x10]
mov eax, dword [esp + 0x14]
push ecx
lea edx, [esp + 0x8ac]
push edx
push eax
call fcn.00403e90
cmp bl, 1
je 0x42b9a6
mov byte [esp + 0x11], 0
cmp byte [esp + 0x10], 1
jne 0x42b9cc
mov bl, byte [esp + 0x13]
jmp 0x4038f2
inc esi
jmp 0x4039d2
cmp word [esp + esi*2 + 0x8a6], 0x5f
jne 0x403ad5
jmp 0x42b953
lea esi, [esp + 0x18]
call fcn.00401330
xor al, al
jmp 0x40399e
lea esi, [esp + 0x28]
call fcn.0040d900
lea edx, [esp + 0x698]
push edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
call fcn.0040d900
lea ecx, [esp + 0x40]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
call fcn.00402620
call fcn.0040d900
mov eax, dword [esp + 0x2c]
push eax
call fcn.004112ef
mov al, byte [esp + 0x14]
add esp, 4
dec dword [0x4a92d0]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
invalid
push esi
jmp 0x42b89f
call 0x42b8ab
add byte [esi], dh
dec edi
dec ebx
inc esp
dec esp
add esp, 4
or esi, 0xaef2
pop esi
push ecx
xor ecx, 0x10c49
and ecx, 0x52ee
or ecx, 0x9bc2
pop ecx
lea edx, [ebp - 0x16cc]
mov dword [ebp - 0xc28], edx
mov eax, dword [ebp - 0x4d8]
mov ecx, dword [eax + 0x30]
mov dword [ebp - 0xc24], ecx
xor edx, edx
xchg ebp, eax
fdiv st(3)
invalid
mov word [ebp - 0x1fc], dx
xor eax, eax
mov word [ebp - 0x104], ax
push eax
push edi
add esp, 4
sub eax, 0x8905
call 0x42b90e
add byte [ecx + 0x32], al
aaa
add byte [eax], al
inc ecx
xor dh, byte [edi]
dec ecx
cmp byte [eax + 0x39], cl
add esp, 4
pop eax
push eax
push ebx
add esp, 4
call 0x42b924
add byte [ecx + eax*2 + 0x47], al
inc ecx
cmp cl, byte [esi + 0x48]
add esp, 4
pop eax
mov ecx, dword [ebp - 0xc24]
mov dx, word [ecx]
mov word [ebp - 0xf82], dx
mov eax, dword [ebp - 0xc24]
add eax, 2
mov dword [ebp - 0xc24], eax
mov cx, word [ebp - 0xf82]
mov word [ebp - 0x1fc], cx
mov edx, dword [ebp - 0xc28]
mov ax, word [edx]
mov word [ebp - 0xf84], ax
mov ecx, dword [ebp - 0xc28]
add ecx, 2
mov dword [ebp - 0xc28], ecx
mov dx, word [ebp - 0xf84]
mov word [ebp - 0x104], dx
invalid
invalid
invalid
mov dword [ebp - 0x104], edx
push ebx
push ecx
add esp, 4
or ebx, 0xb238
and ebx, 0x19eb
and ebx, 0x12798
or ebx, 0xac72
pop ebx
push edi
sub edi, 0x168ae
or edi, 0x16309
or edi, 0x16117
add byte [ecx + 0x16309cf], al
add byte [ecx + 0x16117cf], al
add byte [edi + 0xf], bl
mov bh, 0x85
cld
invalid
popal
add dword [eax], eax
pop edi
movzx eax, word [ebp - 0x104]
test eax, eax
jne 0x42b9d7
movzx ecx, word [ebp - 0x1fc]
movzx edx, word [ebp - 0x104]
sub ecx, edx
mov dword [ebp - 0x14e4], ecx
jmp 0x42ba3a
jmp [ebx]
movzx eax, word [ebp - 0x1fc]
movzx ecx, word [ebp - 0x104]
cmp eax, ecx
je 0x42b8f6
movzx edx, word [ebp - 0x1fc]
xor edx, 0x20
movzx eax, word [ebp - 0x104]
cmp edx, eax
je 0x42b8f6
movzx ecx, word [ebp - 0x1fc]
movzx edx, word [ebp - 0x104]
cmp ecx, edx
jge 0x42ba24
mov dword [ebp - 0x14e0], 0xffffffff
jmp 0x42ba2e
mov dword [ebp - 0x14e0], 1
mov eax, dword [ebp - 0x14e0]
mov dword [ebp - 0x14e4], eax
cmp dword [ebp - 0x14e4], 0
jne 0x42ba83
push edi
push ebx
add esp, 4
sub edi, 0x16800
call fcn.0042ba5c
push ecx
push ebx
add esp, 4
or ecx, 0xd2de
xor ecx, 0x12de2
xor ecx, 0x714a
and ecx, 0x16ae7
pop ecx
push ecx
call 0x42bab1
add byte [0x41484b4a], bh
cmp dword [ebx + edi + 0x4a], eax
add esp, 4
pop ecx
mov edx, dword [ebp - 0x4d8]
mov eax, dword [edx]
mov dword [ebp - 0x4d8], eax
mov ecx, dword [ebp - 0x4d8]
cmp ecx, dword [ebp - 0xc2c]
je 0x42bae1
mov edx, dword [ebp - 0x4d8]
cmp dword [edx + 0x30], 0
jne 0x42b897
mov dword [ebp - 0x6ec], 0