Function at 0x401550
Capabilities:
Get common file path
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42dd28
mov eax, dword fs:[0]
push eax
sub esp, 0xeec
mov eax, dword [0x43e524]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
xor edi, edi
call fcn.004052f4
push 0x44
lea eax, [ebp - 0x87c]
push edi
push eax
call fcn.0041b690
add esp, 0xc
lea ecx, [ebp - 0x87c]
call fcn.00401f50
push 0x254
lea eax, [ebp - 0xad0]
mov dword [ebp - 4], edi
push edi
push eax
call fcn.0041b690
add esp, 0xc
lea ecx, [ebp - 0xad0]
call fcn.00402440
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x884]
test eax, eax
je 0x4015e1
push eax
call fcn.00403b92
add esp, 4
push 0x800
call fcn.00403b97
add esp, 4
mov dword [ebp - 0x884], eax
test eax, eax
je 0x401619
push 0x800
push 0
push eax
call fcn.0041b690
add esp, 0xc
push dword [ebp - 0x884]
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0x800
lea eax, [ebp - 0x814]
push 0
push eax
call fcn.0041b690
add esp, 0xc
lea ecx, [ebp - 0x814]
call fcn.00402920
test eax, eax
je 0x40164b
lea eax, [ebp - 0x814]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea eax, [ebp - 0x87c]
mov byte [ebp - 4], 2
push eax
mov ecx, esi
call fcn.004055cf
cmp dword [ebp - 0x850], 5
jne 0x4017c3
mov eax, dword [ebp - 0x84c]
cmp dword [eax - 0xc], 0
je 0x4017c3
mov eax, dword [ebp - 0x848]
cmp dword [eax - 0xc], 0
je 0x4017c3
mov eax, dword [ebp - 0x844]
cmp dword [eax - 0xc], 0
je 0x4017c3
mov eax, dword [ebp - 0x83c]
cmp dword [eax - 0xc], 0
je 0x4017c3
push 0
lea eax, [ebp - 0x828]
push eax
lea ecx, [ebp - 0xad0]
call dword [sym.imp.EpInstMgr.dll_public:_int___thiscall_CPrnDrvInst::IsInstalledDP3_char___unsigned_long_int_]
test eax, eax
je 0x4016cc
cmp byte [ebp - 0x828], 0x32
jge 0x4016f0
call fcn.00402560
test eax, eax
jne 0x4016f0
push 0x43bfd8
lea eax, [ebp - 0xee4]
mov dword [ebp - 0xee4], 0xfffffffe
push eax
call fcn.0041bfe9
mov eax, dword [ebp - 0x840]
cmp dword [eax - 0xc], 0
jne 0x401717
push 0x43bfd8
lea eax, [ebp - 0xee8]
mov dword [ebp - 0xee8], 0xfffffffc
push eax
call fcn.0041bfe9
push ecx
mov ecx, esp
mov dword [ebp - 0x818], esp
lea eax, [ebp - 0x844]
mov dword [ebp - 0xef8], ecx
push eax
call fcn.00401cb0
push ecx
mov byte [ebp - 4], 3
lea eax, [ebp - 0x840]
mov ecx, esp
mov dword [ebp - 0xef8], esp
push eax
mov dword [ebp - 0xedc], ecx
call fcn.00401cb0
push ecx
mov byte [ebp - 4], 4
lea eax, [ebp - 0x848]
mov ecx, esp
mov dword [ebp - 0xedc], esp
push eax
mov dword [ebp - 0xee0], ecx
call fcn.00401cb0
push ecx
mov ecx, esp
mov byte [ebp - 4], 5
lea eax, [ebp - 0x84c]
mov dword [ebp - 0xee0], ecx
push eax
call fcn.00401cb0
lea ecx, [ebp - 0xad0]
mov byte [ebp - 4], 2
call fcn.00402660
test eax, eax
jne 0x4017b7
push 0x43bfd8
lea eax, [ebp - 0xeec]
mov dword [ebp - 0xeec], 0xfffffffd
push eax
call fcn.0041bfe9
mov dword [ebp - 4], 1
jmp 0x401850
push 0x43bfd8
lea eax, [ebp - 0xef0]
mov dword [ebp - 0xef0], 0xffffffff
push eax
call fcn.0041bfe9
mov eax, dword [ebp - 0xef4]
mov dword [ebp - 0x818], eax
mov eax, 0x4017f0
ret
mov eax, dword [ebp - 0x884]
test eax, eax
je 0x401879
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push dword [ebp - 0x884]
call fcn.00403b92
add esp, 4
mov dword [ebp - 0x884], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x828], xmm0
mov dword [ebp - 0x820], 0
movups xmmword [ebp - 0x838], xmm0
mov dword [ebp - 0x838], 0
movups xmmword [ebp - 0x830], xmm0
mov dword [ebp - 0x81c], 0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x838]
push dword [ebp - 0x83c]
call fcn.00402c50
test eax, eax
jne 0x40194d
push 0x408
push eax
lea eax, [ebp - 0xed8]
push eax
call fcn.0041b690
add esp, 0xc
mov dword [ebp - 0x818], 0
lea eax, [ebp - 0x818]
lea ecx, [ebp - 0xad0]
push eax
call fcn.004014d0
mov byte [ebp - 4], 9
lea eax, [ebp - 0xed0]
mov esi, dword [ebp - 0x818]
push esi
push 0x200
push eax
call fcn.0041e097
lea eax, [ebp - 0xed8]
mov dword [ebp - 0xed8], edi
push eax
lea ecx, [ebp - 0x838]
call fcn.00402d80
mov byte [ebp - 4], 8
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40194d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x838]
call fcn.00402b60
lea ecx, [ebp - 0xad0]
call fcn.004024e0
lea ecx, [ebp - 0x87c]
call fcn.00402060
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00418bea
mov esp, ebp
pop ebp
ret