Function at 0x456ae8
Capabilities:
Get common file path
Get disk information
Query environment variable
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push 0
push ebx
push esi
xor eax, eax
push ebp
push 0x456d7c
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00450dc4
test al, al
je 0x456d61
mov ebx, sub.kernel32.dll_LoadLibraryA_1
mov esi, sub.kernel32.dll_GetProcAddress_2
call fcn.0045683c
lea edx, [ebp - 4]
mov eax, 0x456d94
call fcn.00452468
mov eax, dword [ebp - 4]
call fcn.00404d70
push eax
call ebx
mov ebx, eax
lea edx, [ebp - 8]
mov eax, 0x456dac
call fcn.00452468
mov eax, dword [ebp - 8]
call fcn.00404d70
push eax
push ebx
call esi
mov dword [0x45b0d0], eax
lea edx, [ebp - 0xc]
mov eax, 0x456dd4
call fcn.00452468
mov eax, dword [ebp - 0xc]
call fcn.00404d70
push eax
push ebx
call esi
mov dword [0x45b0d8], eax
call fcn.00455c84
mov eax, 0x64
call fcn.004030a4
cmp eax, 0x3e8
jne 0x456d61
call sub.kernel32.dll_HeapReAlloc
push 0x20
push 0x50
push 0x46
call sub.kernel32.dll_GetCurrentThread
fld xword [0x456de4]
call fcn.00402b0c
fcomp dword [0x456df0]
fnstsw ax
sahf
jne 0x456bcb
fld xword [0x456df4]
call fcn.00402b24
fabs
fcomp dword [0x456e00]
fnstsw ax
sahf
je 0x456bd4
push 0x20
push 0x36
call sub.kernel32.dll_OpenFileMappingW
fld xword [0x456e04]
call fcn.00402b54
fcomp dword [0x456e10]
fnstsw ax
sahf
je 0x456bf3
push 0x10
push 0x58
call sub.kernel32.dll_SetCurrentDirectoryA
fld xword [0x456e14]
call fcn.00402b24
call fcn.00402b84
cmp edx, 0
jne 0x456c0d
cmp eax, 0x1b6
je 0x456c25
fld xword [0x456e20]
call fcn.00402b54
fcomp dword [0x456e2c]
fnstsw ax
sahf
jne 0x456c2a
call sub.kernel32.dll_GetVolumeInformationA
push 0x456e38
push 0x456e50
push 0x456e68
call sub.kernel32.dll_GetTimeFormatA
push 0x456e78
push 0x456e88
push 0x456e9c
call sub.user32.dll_SoftModalMessageBox
push 0x456eb0
push 0x456ec4
push 0x456ed4
call sub.user32.dll_ScrollWindow_1
push 0x2a
call sub.kernel32.dll_GetShortPathNameW
test al, al
jne 0x456d61
push 0x14
push 0x58
call sub.kernel32.dll_FindResourceW
test al, al
jne 0x456d61
push 0x42
push 0xd
push 6
call sub.user32.dll_SwitchDesktop
test al, al
jne 0x456d61
fld xword [0x456edc]
call fcn.00402b44
fcomp dword [0x456ee8]
fnstsw ax
sahf
je 0x456cb9
push 0x456ef4
call sub.kernel32.dll_IsBadHugeReadPtr
push 0
push 0x38e
call fcn.00406820
add esp, 8
fcomp dword [0x456f04]
fnstsw ax
sahf
je 0x456cde
push 0x62
push 0x41
push 0x24
call sub.kernel32.dll_GlobalDeleteAtom_1
push 0x44
call sub.user32.dll_LoadStringW
fld xword [0x456f08]
call fcn.00402b24
call fcn.00402b78
cmp edx, 0
jne 0x456d0a
cmp eax, 0x31a
jne 0x456d0a
push 0x14
push 0x33
call sub.kernel32.dll_EnumSystemCodePagesW
fld xword [0x456f14]
call fcn.00402afc
fcomp dword [0x456f20]
fnstsw ax
sahf
jne 0x456d2b
push 0xb
push 0x1b
push 0x5a
call sub.kernel32.dll_HeapWalk
push 0x61
push 0xd
call sub.kernel32.dll_GetCurrentDirectoryA
push 0x23
push 0x48
push 0x10
call sub.kernel32.dll_ExpandEnvironmentStringsA
push 0x34
call sub.user32.dll_RegisterClassA_1
push 0xb
call sub.kernel32.dll_EnumDateFormatsW
push 0x456f2c
push 0x456f44
push 0x456f5c
call sub.kernel32.dll_SetProcessWorkingSetSize
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x456d83
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.004048e4
ret