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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42cc48
mov eax, dword fs:[0]
push eax
sub esp, 0xeec
mov eax, dword [0x43d524]
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.004052e9
push 0x44
lea eax, [ebp - 0x87c]
push edi
push eax
call fcn.0041a3f0
add esp, 0xc
lea ecx, [ebp - 0x87c]
call fcn.004021b0
push 0x254
lea eax, [ebp - 0xad0]
mov dword [ebp - 4], edi
push edi
push eax
call fcn.0041a3f0
add esp, 0xc
lea ecx, [ebp - 0xad0]
call fcn.004026a0
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x884]
test eax, eax
je 0x401841
push eax
call fcn.00403d9a
add esp, 4
push 0x800
call fcn.00403d9f
add esp, 4
mov dword [ebp - 0x884], eax
test eax, eax
je 0x401879
push 0x800
push 0
push eax
call fcn.0041a3f0
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.0041a3f0
add esp, 0xc
lea ecx, [ebp - 0x814]
call fcn.00402b80
test eax, eax
je 0x4018ab
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.00405553
cmp dword [ebp - 0x850], 5
jne 0x401a23
mov eax, dword [ebp - 0x84c]
cmp dword [eax - 0xc], 0
je 0x401a23
mov eax, dword [ebp - 0x848]
cmp dword [eax - 0xc], 0
je 0x401a23
mov eax, dword [ebp - 0x844]
cmp dword [eax - 0xc], 0
je 0x401a23
mov eax, dword [ebp - 0x83c]
cmp dword [eax - 0xc], 0
je 0x401a23
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 0x40192c
cmp byte [ebp - 0x828], 0x32
jge 0x401950
call fcn.004027c0
test eax, eax
jne 0x401950
push 0x43b1c8
lea eax, [ebp - 0xee4]
mov dword [ebp - 0xee4], 0xfffffffe
push eax
call fcn.0041ad3d
mov eax, dword [ebp - 0x840]
cmp dword [eax - 0xc], 0
jne 0x401977
push 0x43b1c8
lea eax, [ebp - 0xee8]
mov dword [ebp - 0xee8], 0xfffffffc
push eax
call fcn.0041ad3d
push ecx
mov ecx, esp
mov dword [ebp - 0x818], esp
lea eax, [ebp - 0x844]
mov dword [ebp - 0xef8], ecx
push eax
call fcn.00401f00
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.00401f00
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.00401f00
push ecx
mov ecx, esp
mov byte [ebp - 4], 5
lea eax, [ebp - 0x84c]
mov dword [ebp - 0xee0], ecx
push eax
call fcn.00401f00
lea ecx, [ebp - 0xad0]
mov byte [ebp - 4], 2
call fcn.004028c0
test eax, eax
jne 0x401a17
push 0x43b1c8
lea eax, [ebp - 0xeec]
mov dword [ebp - 0xeec], 0xfffffffd
push eax
call fcn.0041ad3d
mov dword [ebp - 4], 1
jmp 0x401ab0
push 0x43b1c8
lea eax, [ebp - 0xef0]
mov dword [ebp - 0xef0], 0xffffffff
push eax
call fcn.0041ad3d
mov eax, dword [ebp - 0xef4]
mov dword [ebp - 0x818], eax
mov eax, 0x401a50
ret
mov eax, dword [ebp - 0x884]
test eax, eax
je 0x401ad9
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push dword [ebp - 0x884]
call fcn.00403d9a
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.00402eb0
test eax, eax
jne 0x401bad
push 0x408
push eax
lea eax, [ebp - 0xed8]
push eax
call fcn.0041a3f0
add esp, 0xc
mov dword [ebp - 0x818], 0
lea eax, [ebp - 0x818]
lea ecx, [ebp - 0xad0]
push eax
call fcn.00401730
mov byte [ebp - 4], 9
lea eax, [ebp - 0xed0]
mov esi, dword [ebp - 0x818]
push esi
push 0x200
push eax
call fcn.0041d037
lea eax, [ebp - 0xed8]
mov dword [ebp - 0xed8], edi
push eax
lea ecx, [ebp - 0x838]
call fcn.00402fe0
mov byte [ebp - 4], 8
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x401bad
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x838]
call fcn.00402dc0
lea ecx, [ebp - 0xad0]
call fcn.00402740
lea ecx, [ebp - 0x87c]
call fcn.004022c0
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.004178da
mov esp, ebp
pop ebp
ret