Function at 0x403ac0
Capabilities:
Get common file path

Disassembly:
sub esp, 0x42c
mov eax, dword [0x44d660]
xor eax, esp
mov dword [esp + 0x428], eax
mov eax, dword [0x44f574]
mov ecx, dword [0x44f578]
mov edx, dword [0x44f57c]
mov dword [esp + 8], eax
push 0x104
lea eax, [esp + 0x1c]
push eax
push 0
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
push 0x104
lea edx, [esp + 0x120]
push 0
push edx
call fcn.004254b0
push 0x104
lea eax, [esp + 0x230]
push 0
push eax
call fcn.004254b0
mov ecx, dword [0x44f598]
push ecx
push 0x43d1cc
lea edx, [esp + 0x344]
push 0x104
push edx
call fcn.00425731
lea eax, [esp + 0x34c]
push eax
push str._add_by_zhanghui_the_app_name_is__s_r_n
push 0x44f378
call fcn.00409510
mov eax, dword [0x44f598]
add esp, 0x34
cmp eax, 6
jne 0x4030b2
call fcn.00401350
test eax, eax
jne 0x40304a
push str.cmdjmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.cmdjser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs_r_n
push 0x44f378
call fcn.00409510
lea edx, [esp + 0x14c]
push edx
push str.__s_r_n
push 0x44f378
call fcn.00409510
lea eax, [esp + 0x25c]
push eax
jmp 0x4036b6
call fcn.00401350
test eax, eax
je 0x403087
call fcn.004013c0
test eax, eax
je 0x403087
push str.VISTA64cmdjmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.VISTA64cmdjser.inf
jmp 0x402ffb
push str.WinXP64cmdjmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.WinXP64cmdjser.inf
jmp 0x402ffb
cmp eax, 5
jne 0x403157
call fcn.00401350
test eax, eax
jne 0x4030ef
push str.cmdimdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.cmdiser.inf
jmp 0x402ffb
call fcn.00401350
test eax, eax
je 0x40312c
call fcn.004013c0
test eax, eax
je 0x40312c
push str.VISTA64cmdimdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.VISTA64cmdiser.inf
jmp 0x402ffb
push str.WinXP64cmdimdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.WinXP64cmdiser.inf
jmp 0x402ffb
cmp eax, 4
jne 0x40335e
call fcn.00401350
test eax, eax
jne 0x40326a
push str._add_by_zhanghui__the_system_iswin32_ok__r_n
push 0x44f378
call fcn.00409510
add esp, 8
call fcn.00401430
test eax, eax
je 0x4031d4
push str.Win7_32_tmnsmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.Win7_32_tmnsser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs_preinstal_win7_32_r_n
jmp 0x40301c
call fcn.004013c0
test eax, eax
lea ecx, [esp + 0x18]
lea edx, [esp + 0x11c]
je 0x403229
push str.VISTA_tmnsmdm.inf
push ecx
push str._s_s
push 0x104
push edx
call fcn.00425731
push str.VISTA_tmnsser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs_preinstall_vista_r_n
jmp 0x40301c
push str.WinXp_tmnsmdm.inf
push ecx
push str._s_s
push 0x104
push edx
call fcn.00425731
push str.WinXp_tmnsser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs_preinstall_winxp_r_n
jmp 0x40301c
call fcn.00401350
test eax, eax
je 0x4032c8
call fcn.004013c0
test eax, eax
je 0x4032c8
push str.VISTA64_tmnsmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.VISTA64_tmnsser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs__preinstall_VIsta64__r_n
jmp 0x40301c
call fcn.00401430
test eax, eax
lea ecx, [esp + 0x18]
lea edx, [esp + 0x11c]
je 0x40331d
push str.Win7_64_tmnsmdm.inf
push ecx
push str._s_s
push 0x104
push edx
call fcn.00425731
push str.Win7_64_tmnsser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs_preinstall_win7_64_r_n
jmp 0x40301c
push str.WinXP64_tmnsmdm.inf
push ecx
push str._s_s
push 0x104
push edx
call fcn.00425731
push str.WinXP64_tmnsser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
lea ecx, [esp + 0x240]
push 0x104
push ecx
call fcn.00425731
push str.InstallDevs_preinstall_XP_64_r_n
jmp 0x40301c
cmp eax, 3
jne 0x403403
call fcn.00401350
test eax, eax
jne 0x40339b
push str.cmnlmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.cmnlser.inf
jmp 0x402ffb
call fcn.00401350
test eax, eax
je 0x4033d8
call fcn.004013c0
test eax, eax
je 0x4033d8
push str.VISTA64cmnlmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.VISTA64cmnlser.inf
jmp 0x402ffb
push str.WinXP64cmnlmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.WinXP64cmnlser.inf
jmp 0x402ffb
cmp eax, 2
jne 0x4034a8
call fcn.00401350
test eax, eax
jne 0x403440
push str.cmnimdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.cmniser.inf
jmp 0x402ffb
call fcn.00401350
test eax, eax
je 0x40347d
call fcn.004013c0
test eax, eax
je 0x40347d
push str.VISTA64.91.newcmnimdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.VISTA64.91.newcmniser.inf
jmp 0x402ffb
push str.WinXP64cmnimdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.WinXP64cmniser.inf
jmp 0x402ffb
cmp eax, 1
jne 0x40354d
call fcn.00401350
test eax, eax
jne 0x4034e5
push str.cmmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.cmser.inf
jmp 0x402ffb
call fcn.00401350
test eax, eax
je 0x403522
call fcn.004013c0
test eax, eax
je 0x403522
push str._vista64cmmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str._vista64cmser.inf
jmp 0x402ffb
push str.xp0364cmmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str.xp0364cmser.inf
jmp 0x402ffb
call fcn.00401350
test eax, eax
je 0x4034ba
call fcn.00401350
test eax, eax
je 0x403646
call fcn.004013c0
test eax, eax
je 0x403646
cmp dword [0x44f594], 0
je 0x4035bc
push str._vista64cmmdm.inf
lea ecx, [esp + 0x1c]
push ecx
push str._s_s
lea edx, [esp + 0x128]
push 0x104
push edx
call fcn.00425731
push str._vista64cmser.inf
lea eax, [esp + 0x30]
push eax
push str._s_s
push 0x104
lea ecx, [esp + 0x244]
push ecx
jmp 0x4035f9
push str._vista64qcmdm.inf
lea edx, [esp + 0x1c]
push edx
push str._s_s
lea eax, [esp + 0x128]
push 0x104
push eax
call fcn.00425731
push str._vista64qcser.inf
lea ecx, [esp + 0x30]
push ecx
push str._s_s
push 0x104
lea edx, [esp + 0x244]
push edx
call fcn.00425731
add esp, 0x28
push str.InstallDevs_r_n
push 0x44f378
call fcn.00409510
lea eax, [esp + 0x124]
push eax
push str.__s_r_n
push 0x44f378
call fcn.00409510
lea ecx, [esp + 0x234]
push ecx
push str.__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0x20
jmp 0x4036c8
push str.xp0364cmmdm.inf
lea edx, [esp + 0x1c]
push edx
push str._s_s
lea eax, [esp + 0x128]
push 0x104
push eax
call fcn.00425731
push str.xp0364cmser.inf
lea ecx, [esp + 0x30]
push ecx
push str._s_s
lea edx, [esp + 0x240]
push 0x104
push edx
call fcn.00425731
push str.InstallDevs_r_n
push 0x44f378
call fcn.00409510
lea eax, [esp + 0x14c]
push eax
push str.__s_r_n
push 0x44f378
call fcn.00409510
lea ecx, [esp + 0x25c]
push ecx
push str.__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0x48
push ebx
push ebp
push esi
lea edx, [esp + 0x128]
push edi
push edx
call fcn.00401480
lea eax, [esp + 0x234]
push eax
call fcn.00401480
add esp, 8
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [esp + 0x28]
push ecx
push str.szCurrentDir:__s__r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
xor ebx, ebx
lea ecx, [ecx]
xor eax, eax
lea edx, [esp + 0x14]
push edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
push 1
lea eax, [esp + 0x134]
push eax
mov ecx, 0x44eac8
call fcn.00405440
test eax, eax
jne 0x403839
lea ecx, [esp + 0x10]
push ecx
push 1
lea edx, [esp + 0x238]
push edx
mov ecx, 0x44eac8
call fcn.00405440
test eax, eax
jne 0x40385a
mov esi, dword [0x44f5b0]
cmp esi, 4
mov ecx, esi
jb 0x40376e
mov ecx, 4
mov edi, dword [0x44f5b4]
cmp edi, 0x10
mov ebp, dword [0x44f5a0]
mov eax, ebp
jae 0x403786
mov eax, 0x44f5a0
push ecx
push str.9607
push eax
call fcn.00401040
add esp, 0xc
test eax, eax
jne 0x4037b5
cmp esi, 4
jb 0x4037ba
cmp esi, 4
setne al
test eax, eax
jne 0x4037b5
cmp dword [esp + 0x14], eax
jne 0x40380d
cmp dword [esp + 0x10], 4
jmp 0x40380b
cmp esi, 4
jae 0x4037be
mov ecx, esi
jmp 0x4037c3
mov ecx, 4
cmp edi, 0x10
mov eax, ebp
jae 0x4037cf
mov eax, 0x44f5a0
push ecx
push str.9D10
push eax
call fcn.00401040
add esp, 0xc
test eax, eax
jne 0x4037ff
cmp esi, 4
jb 0x4037ff
cmp esi, 4
setne al
test eax, eax
jne 0x4037ff
cmp dword [esp + 0x14], 1
jne 0x40380d
cmp dword [esp + 0x10], 4
jmp 0x40380b
cmp dword [esp + 0x14], 1
jne 0x40380d
cmp dword [esp + 0x10], 2
je 0x40387b
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
add ebx, 1
push ebx
push str.___:numwait_d_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
cmp ebx, 0xb
jb 0x403710
jmp 0x40388d
lea eax, [esp + 0x12c]
push eax
push str.DITDI_EnumerateDevNodesByHardwareIDs_ERROR_:__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
xor al, al
jmp 0x403a9a
lea ecx, [esp + 0x230]
push ecx
push str.DITDI_EnumerateDevNodesByHardwareIDs_ERROR_:__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
xor al, al
jmp 0x403a9a
push str.Match_DITDI_EnumerateDevNodesByHardwareIDs___r_n
push 0x44f378
call fcn.00409510
add esp, 8
cmp ebx, 0xb
jne 0x4038a4
push str.DITDI_EnumerateDevNodesByHardwareIDs_timeout___r_n
push 0x44f378
call fcn.00409510
add esp, 8
push str.___:next..._r_n
push 0x44f378
call fcn.00409510
mov ebp, dword [esp + 0x20]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 8
xor esi, esi
mov ebx, 1
lea edx, [esp + 0x10]
push edx
xor eax, eax
push ebx
push ebp
mov ecx, 0x44eac8
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
call fcn.00405420
test eax, eax
jne 0x403955
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x14]
push eax
push ebx
push ecx
mov ecx, 0x44eac8
call fcn.00405420
test eax, eax
jne 0x40396f
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x18]
push edx
push ebx
push eax
mov ecx, 0x44eac8
call fcn.00405420
test eax, eax
jne 0x40398d
cmp dword [esp + 0x10], ebx
jne 0x40392e
cmp dword [esp + 0x14], ebx
jne 0x40392e
cmp dword [esp + 0x18], ebx
je 0x4039ab
push 0x3e8
call edi
add esi, ebx
push esi
push str.___::numwait_d_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
cmp esi, 0x15
jb 0x4038c7
jmp 0x4039bd
push ebp
push str.DITDI_EnumerateDevNodes_ERROR_:__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
xor al, al
jmp 0x403a9a
mov ecx, dword [esp + 0x20]
push ecx
push str.DITDI_EnumerateDevNodes_ERROR_:__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
xor al, al
jmp 0x403a9a
mov edx, dword [esp + 0x24]
push edx
push str.DITDI_EnumerateDevNodes_ERROR_:__s_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
xor al, al
jmp 0x403a9a
push str.Match_DITDI_EnumerateDevNodes___r_n
push 0x44f378
call fcn.00409510
add esp, 8
cmp esi, 0x15
jne 0x4039d4
push str.DITDI_EnumerateDevNodes_timeout___r_n
push 0x44f378
call fcn.00409510
add esp, 8
xor esi, esi
mov dword [esp + 0x1c], ebx
lea ebx, [ebx]
lea eax, [esp + 0x1c]
push eax
mov ecx, 0x44eac8
call fcn.004056b0
test eax, eax
jne 0x403a20
push 0x3e8
call edi
add esi, ebx
push esi
push str.___:::numwait_d_r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
cmp esi, 0xb4
ja 0x403a3c
cmp dword [esp + 0x1c], 0
ja 0x4039e0
jmp 0x403a4e
mov ecx, dword [esp + 0x1c]
push ecx
push eax
push str._DITDI_IsPnPInstallationPending_ERROR_:__d___d___r_n
push 0x44f378
call fcn.00409510
add esp, 0x10
xor al, al
jmp 0x403a9a
push str.DITDI_IsPnPInstallationPending_timeout___r_n
push 0x44f378
call fcn.00409510
add esp, 8
push str._Install_driver_go_..._r_n
push 0x44f378
call fcn.00409510
push 0x104
lea edx, [esp + 0x34]
push 0
push edx
call fcn.004254b0
add esp, 0x14
lea eax, [esp + 0x28]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea ecx, [esp + 0x28]
push ecx
push str.szCurrentDir:__s__r_n
push 0x44f378
call fcn.00409510
add esp, 0xc
mov al, bl
mov ecx, dword [esp + 0x438]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00425494
add esp, 0x42c
ret
push esi
push str.begin_disablesign_r_n
push 0x44f378
mov esi, ecx
call fcn.00409510
add esp, 8
mov ecx, esi
call fcn.00402060
push str.end_disablesign_r_n
push 0x44f378
call fcn.00409510
push str.InstallDriver_r_n
push 0x44f378
call fcn.00409510
add esp, 0x10
pop esi
jmp 0x402f10