Function at 0x4024a0
Capabilities:
Check mutex on windows
Copy file
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42a73b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x30a4
call fcn.00416d20
mov eax, dword [0x435db4]
xor eax, esp
mov dword [esp + 0x30a0], eax
push ebx
push esi
push edi
mov eax, dword [0x435db4]
xor eax, esp
push eax
lea eax, [esp + 0x30b8]
mov dword fs:[0], eax
mov dword [esp + 0x10], ecx
call fcn.004086d1
xor ebx, ebx
push 0x1fe
lea eax, [esp + 0x1872]
push ebx
push eax
mov word [esp + 0x1878], bx
call fcn.004151b0
add esp, 0xc
push 0x1fe
lea ecx, [esp + 0x2292]
push ebx
push ecx
mov word [esp + 0x2298], bx
call fcn.004151b0
add esp, 0xc
push 0x206
lea edx, [esp + 0x1c7a]
push ebx
push edx
mov word [esp + 0x1c80], bx
call fcn.004151b0
add esp, 0xc
push 0x206
lea eax, [esp + 0x208a]
push ebx
push eax
mov word [esp + 0x2090], bx
call fcn.004151b0
add esp, 0xc
call fcn.00403590
push eax
call fcn.004036c0
push str._Uninstall_
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 4
call fcn.00401160
call fcn.0040a0d7
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x44]
push 0x104
lea ecx, [esp + 0x2088]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x1c78]
push ecx
push 0x104
lea edx, [esp + 0x2090]
push edx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov eax, dword [esp + 0x18]
mov word [eax], bx
call fcn.004010e0
push 0x100
push str.PRINTER_SERIES_NAME
call fcn.00404150
push eax
lea edi, [esp + 0x2298]
call fcn.00404910
call fcn.00403590
mov edx, edi
lea ecx, [edx + 2]
lea ecx, [ecx]
mov si, word [edx]
add edx, 2
cmp si, bx
jne 0x402600
sub edx, ecx
sar edx, 1
push edx
lea ecx, [esp + 0x2290]
push ecx
mov ecx, eax
call fcn.004018d0
call fcn.00406520
movzx eax, ax
movzx esi, ax
mov edi, esi
lea edx, [esp + 0x268c]
and edi, 0x1ff
call fcn.004019e0
test eax, eax
jne 0x402663
lea edx, [esp + 0x268c]
mov esi, edi
call fcn.004019e0
test eax, eax
jne 0x402663
lea edx, [esp + 0x268c]
lea esi, [eax + 9]
call fcn.004019e0
lea edx, [esp + 0x268c]
push edx
push str.GetLandDir____s
call fcn.00403590
mov edi, eax
call fcn.00403a70
push str.Strings.dll
lea eax, [esp + 0x2698]
push eax
lea ecx, [esp + 0x1c84]
push ecx
push str._s_s_s
lea edx, [esp + 0x2ebc]
push 0x104
push edx
call fcn.00413072
add esp, 0x20
lea eax, [esp + 0x2ea4]
push eax
push str.SetStringDll:__s
call fcn.00403590
mov edi, eax
call fcn.00403a70
mov eax, dword [0x43ac58]
add esp, 8
cmp eax, ebx
jne 0x402709
push 0x20c
call fcn.0040674e
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x402702
push 0x42eeb4
lea eax, [esi + 4]
push 0x104
mov dword [esi], ebx
push eax
mov word [eax], bx
call fcn.00413404
add esp, 0xc
mov eax, esi
jmp 0x402704
xor eax, eax
mov dword [0x43ac58], eax
lea ecx, [esp + 0x2ea4]
push ecx
add eax, 4
push 0x104
push eax
mov word [eax], bx
call fcn.00413404
add esp, 0xc
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
test eax, eax
jne 0x402753
call fcn.00403590
push eax
call fcn.00403ed0
push str.ERROR:_User_does_NOT_have_administrator_priviledges._Cannot_install_the_printer_software_without_administrator_priviledges.
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 4
jmp 0x402d23
mov esi, dword [esp + 0x10]
mov edx, dword [esi + 0x48]
mov eax, edx
lea edi, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x402760
sub eax, edi
sar eax, 1
je 0x4029b7
push str._ProgFiles_Scrubber_
call fcn.00403590
mov edi, eax
call fcn.00403a70
mov edx, dword [esi + 0x48]
add esp, 4
push edx
push str.Uninstall_clean_called_arg___s
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 8
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esi + 0x48]
push eax
lea ecx, [esp + 0x1e80]
push 0x104
push ecx
call fcn.00413404
add esp, 0xc
mov ecx, str.UNKNOWNDIR
lea eax, [esp + 0x1e7c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4027f7
cmp dx, bx
je 0x4027f3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4027f7
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x4027d1
xor eax, eax
jmp 0x4027fc
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x40283f
push 1
push 0x42ef74
lea edx, [esp + 0x1e84]
push edx
lea ecx, [esp + 0x48]
call fcn.00401a40
lea eax, [esp + 0x1e7c]
push 0x5c
push eax
call fcn.004135a6
add esp, 8
cmp eax, ebx
je 0x40283f
mov word [eax], bx
lea ebx, [esp + 0x1e7c]
call fcn.00401eb0
xor ebx, ebx
push 0x1fe
lea ecx, [esp + 0x1672]
push ebx
push ecx
mov word [esp + 0x1678], bx
call fcn.004151b0
add esp, 0xc
push 0x206
lea edx, [esp + 0x1262]
push ebx
push edx
mov word [esp + 0x1268], bx
call fcn.004151b0
mov esi, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
add esp, 0xc
lea eax, [esp + 0x125c]
push eax
push ebx
push ebx
push 0x17
push ebx
call esi
push 0x42ec84
lea ecx, [esp + 0x1260]
push 0x104
push ecx
call fcn.004131a5
add esp, 0xc
push 0x42f300
lea edx, [esp + 0x1260]
push 0x104
push edx
call fcn.004131a5
add esp, 0xc
lea ebx, [esp + 0x125c]
call fcn.00401eb0
mov eax, ebx
push eax
xor edi, edi
push edi
push edi
push 2
push edi
call esi
push 0x42ec84
mov ecx, ebx
push 0x104
push ecx
call fcn.004131a5
add esp, 0xc
push 0x42f300
mov edx, ebx
push 0x104
push edx
call fcn.004131a5
add esp, 0xc
call fcn.00401eb0
push 0xa
lea ecx, [esp + 0x24]
call fcn.00406c03
lea esi, [esp + 0x166c]
mov dword [esp + 0x30c0], edi
call section..text
lea ecx, [esp + 0x20]
call fcn.00406420
push str.ScrubFiles
mov eax, esi
call fcn.00406350
lea eax, [esp + 0x20]
push eax
call fcn.00401fb0
push str.RebootNeeded
mov ecx, esi
push ecx
push str.GetDwordFromHKLM__s__s
mov dword [esp + 0x1c], edi
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 0xc
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x14]
push eax
push str.RebootNeeded
mov eax, esi
mov dword [esp + 0x20], 4
call fcn.004062b0
push str.RebootNeeded
mov eax, esi
call fcn.00406350
cmp dword [esp + 0x10], 1
jne 0x40299e
call fcn.00402d50
lea ecx, [esp + 0x20]
mov dword [esp + 0x30c0], 0xffffffff
call fcn.00406d09
jmp 0x402d23
push edx
push str.Uninstall_m_lpCmdLine_is__s
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 8
push str.HPLJ2010InstallExists
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
mov dword [esp + 0x10], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x402a11
cmp esi, ebx
je 0x4029f8
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.There_is_already_a_copy_of_install_or_uninstall_running.__Aborting...
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 4
jmp 0x402d23
call fcn.00403150
test eax, eax
je 0x402a3b
push str.ProdInst64.exe
lea ecx, [esp + 0x1c78]
push ecx
push str._s_s
push 0x100
lea edx, [esp + 0x187c]
push edx
jmp 0x402a5a
push str.ProdInst.exe
lea eax, [esp + 0x1c78]
push eax
push str._s_s
push 0x100
lea ecx, [esp + 0x187c]
push ecx
call fcn.00413072
add esp, 0x14
push 1
mov ecx, 0x42f468
lea ebx, [esp + 0x1870]
call fcn.00402e60
add esp, 4
mov esi, eax
push esi
push str.dwExitCode___d
call fcn.00403590
mov edi, eax
call fcn.00403a70
xor ebx, ebx
add esp, 8
cmp esi, ebx
jne 0x402d0d
push 0x206
lea edx, [esp + 0x289a]
push ebx
push edx
mov word [esp + 0x28a0], bx
call fcn.004151b0
add esp, 0xc
lea eax, [esp + 0x2894]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea ecx, [esp + 0x2894]
push ecx
push str._s_siuninst.exe
lea edx, [esp + 0x1874]
push 0x100
push edx
call fcn.00413072
add esp, 0x10
push ebx
lea eax, [esp + 0x1870]
push eax
lea ecx, [esp + 0x208c]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push 0x206
lea edx, [esp + 0x1a72]
push ebx
push edx
mov word [esp + 0x1a78], bx
call fcn.004151b0
add esp, 0xc
push 0x206
lea eax, [esp + 0x146a]
push ebx
push eax
mov word [esp + 0x1470], bx
call fcn.004151b0
add esp, 0xc
push 0x206
lea ecx, [esp + 0x2ca2]
push ebx
push ecx
mov word [esp + 0x2ca8], bx
call fcn.004151b0
add esp, 0xc
push 0x1fe
lea edx, [esp + 0x2aa2]
push ebx
push edx
mov word [esp + 0x2aa8], bx
call fcn.004151b0
add esp, 0xc
push 0x1fe
lea eax, [esp + 0x2492]
push ebx
push eax
mov word [esp + 0x2498], bx
call fcn.004151b0
add esp, 0xc
push 0x100
push str.MANUFACTURER
call fcn.00404150
push eax
lea edi, [esp + 0x2aa8]
call fcn.00404910
push 0x104
push str.INSTALL_DIRECTORY
call fcn.00404150
push eax
lea edi, [esp + 0x2ca8]
call fcn.00404910
test eax, eax
jne 0x402c66
lea esi, [esp + 0x248c]
call section..text
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1a70]
push edx
mov dword [esp + 0x1c], 0x104
call fcn.004063e0
push str.ProgFilesDir
mov eax, esi
call fcn.00406350
lea eax, [esp + 0x1a6c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x402c15
sub eax, edx
sar eax, 1
jne 0x402c32
lea esi, [esp + 0x1a6c]
call fcn.00403330
lea eax, [esp + 0x2c9c]
push eax
lea ecx, [esp + 0x2aa0]
push ecx
lea edx, [esp + 0x1a74]
push edx
push 0x42ec94
lea eax, [esp + 0x1474]
push 0x104
push eax
call fcn.00413072
add esp, 0x18
jmp 0x402c94
push str.Couldnt_find_PROP_INSTALL_DIRECTORY__use_Application_dir
call fcn.00403590
mov edi, eax
call fcn.00403a70
add esp, 4
push str.UNKNOWNDIR
lea ecx, [esp + 0x1468]
push 0x104
push ecx
call fcn.00413404
add esp, 0xc
lea eax, [esp + 0x1464]
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x402ca0
sub eax, edx
sar eax, 1
cmp word [esp + eax*2 + 0x1462], 0x5c
jne 0x402cdb
lea eax, [esp + 0x1464]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x402cc4
sub eax, edx
sar eax, 1
mov word [esp + eax*2 + 0x1462], bx
lea edx, [esp + 0x1464]
push edx
push str.Trying_to_remove_arg_directory__s
call fcn.00403590
mov edi, eax
call fcn.00403a70
push ebx
lea ecx, [esp + 0x1470]
lea ebx, [esp + 0x1878]
call fcn.00402e60
add esp, 0xc
xor ebx, ebx
mov esi, dword [esp + 0x10]
cmp esi, ebx
je 0x402d23
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
mov ecx, dword [esp + 0x30b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x30a0]
xor ecx, esp
call fcn.00412bb4
mov esp, ebp
pop ebp
ret