Function at 0x42ebc0
Capabilities:
Get common file path
Link many functions at runtime

Disassembly:
push 0xffffffffffffffff
push 0x437696
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x160
push ebx
push esi
lea eax, [esp + 0x30]
push edi
push eax
push 0
push 0
mov edi, ecx
mov ebx, 1
push 0x23
push 0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x20], ebx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [esp + 0x34]
push str.OZDevices_
push ecx
call esi
mov edx, dword [esp + 0x184]
lea eax, [esp + 0x34]
push edx
push eax
call esi
lea ecx, [esp + 0x34]
push str..dll
push ecx
call esi
push 0
push 0
push 3
push 0
push ebx
lea edx, [esp + 0x48]
push SysReAllocString
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
jne 0x42ec60
lea eax, [esp + 0x34]
mov ecx, edi
push eax
call fcn.0042ef40
test eax, eax
jne 0x42ec67
jmp 0x42ef26
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [edi + 0x180]
test eax, eax
je 0x42ec78
lea ecx, [esp + 0x34]
push ecx
jmp 0x42ec8d
lea edx, [esp + 0x34]
mov ecx, edi
push edx
call fcn.0042f4f0
test eax, eax
jle 0x42ec94
lea eax, [esp + 0x34]
push eax
mov ecx, edi
call fcn.0042f140
lea ecx, [esp + 0x34]
push ebp
push ecx
call sub.MFC42.DLL_AfxLoadLibrary
mov esi, eax
test esi, esi
je 0x42eec8
mov ebx, dword [esp + 0x180]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.ozNewDevice
push esi
mov dword [ebx + 0x24], esi
call edi
mov ebp, eax
push str.ozGetMaxReadArgCount
push esi
mov dword [esp + 0x34], ebp
call edi
push str.ozGetReadArgTypes
push esi
mov dword [esp + 0x30], eax
call edi
push str.ozGetMaxWriteArgCount
push esi
mov dword [esp + 0x2c], eax
call edi
push str.ozGetWriteArgTypes
push esi
mov dword [esp + 0x28], eax
call edi
test ebp, ebp
mov dword [esp + 0x30], eax
je 0x42ee72
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x42ee72
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x42ee72
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x42ee72
test eax, eax
je 0x42ee72
push str.ozNewDevice2
push esi
call edi
push str.ozGetMaxOpenArgCount
push esi
mov ebp, eax
call edi
push str.ozGetOpenArgTypes
push esi
mov dword [esp + 0x3c], eax
call edi
push str.ozGetMaxCloseArgCount
push esi
mov dword [esp + 0x20], eax
call edi
push str.ozGetCloseArgTypes
push esi
mov dword [esp + 0x1c], eax
call edi
xor edi, edi
mov dword [esp + 0x1c], eax
cmp ebp, edi
je 0x42ede5
mov esi, dword [esp + 0x34]
cmp esi, edi
je 0x42ede5
cmp dword [esp + 0x18], edi
je 0x42ede5
cmp dword [esp + 0x14], edi
je 0x42ede5
cmp eax, edi
je 0x42ede5
call ebp
mov dword [ebx + 0x2c], eax
mov dword [ebx + 0x28], eax
call esi
cmp eax, edi
mov dword [ebx + 4], eax
jle 0x42edb8
lea edx, [eax*4]
push edx
call sub.MFC42.DLL_operatornew
lea ecx, [ebx + 0x14]
add esp, 4
cmp eax, edi
mov dword [ecx], eax
je 0x42edb4
push ecx
call dword [esp + 0x1c]
jmp 0x42edb8
mov dword [esp + 0x10], edi
call dword [esp + 0x14]
cmp eax, edi
mov dword [ebx + 8], eax
jle 0x42edec
shl eax, 2
push eax
call sub.MFC42.DLL_operatornew
lea ecx, [ebx + 0x18]
add esp, 4
cmp eax, edi
mov dword [ecx], eax
je 0x42eddf
push ecx
call dword [esp + 0x20]
jmp 0x42edec
mov dword [esp + 0x10], edi
jmp 0x42edec
call dword [esp + 0x2c]
mov dword [ebx + 0x28], eax
mov ecx, dword [ebx + 0x28]
cmp ecx, edi
je 0x42ee08
mov eax, dword [esp + 0x184]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x190]
push eax
call dword [edx + 0x58]
call dword [esp + 0x28]
cmp eax, edi
mov dword [ebx + 0xc], eax
jle 0x42ee37
lea ecx, [eax*4]
push ecx
call sub.MFC42.DLL_operatornew
lea ecx, [ebx + 0x1c]
add esp, 4
cmp eax, edi
mov dword [ecx], eax
je 0x42ee33
push ecx
call dword [esp + 0x28]
jmp 0x42ee37
mov dword [esp + 0x10], edi
call dword [esp + 0x20]
cmp eax, edi
mov dword [ebx + 0x10], eax
jle 0x42ef21
lea edx, [eax*4]
push edx
call sub.MFC42.DLL_operatornew
add ebx, 0x20
add esp, 4
cmp eax, edi
mov dword [ebx], eax
je 0x42ee69
push ebx
call dword [esp + 0x34]
jmp 0x42ef21
mov dword [esp + 0x10], edi
jmp 0x42ef21
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_4
lea eax, [esp + 0x38]
lea ecx, [esp + 0x14]
push eax
xor esi, esi
push str.Could_not_load__s.
push ecx
mov dword [esp + 0x184], esi
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [edx + 0x8c]
push esi
push eax
push ecx
push esi
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [esp + 0x10], esi
mov dword [esp + 0x178], 0xffffffff
lea ecx, [esp + 0x14]
jmp 0x42ef1c
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::CString_4
lea edx, [esp + 0x38]
lea eax, [esp + 0x18]
push edx
push str.Could_not_load__s.
push eax
mov dword [esp + 0x184], ebx
call sub.MFC42.DLL_CString::Format
mov ecx, dword [edi + 0x8c]
mov edx, dword [esp + 0x24]
add esp, 0xc
push 0
push ecx
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [esp + 0x10], 0
mov dword [esp + 0x178], 0xffffffff
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x10]
pop ebp
mov ecx, dword [esp + 0x16c]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x16c
ret 0x14