Function at 0x49d970
Capabilities:
Check if file exists
Check mutex on windows
Compare security identifiers
Delete directory
Get common file path
Get program files directory
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a3f79
mov eax, dword fs:[0]
push eax
mov eax, 0x20f8
call fcn.0056e430
mov eax, dword [0x608554]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x20d8], edi
mov dword [0x618400], 0
mov ebx, 0x6183e8
mov dword [0x6183f0], 0
mov esi, 0x6183f0
mov dword [0x618408], 1
mov dword [0x61840c], 0
mov dword [0x6183e8], 0x5c6910
mov dword [0x608f30], 0x6183f0
mov ecx, dword [ebx]
lea eax, [esi + 8]
push eax
push 0
push 0
lea eax, [ebp - 0x1e90]
mov dword [ebp - 0x1e90], ecx
push eax
push 1
push ecx
push esi
mov dword [ebp - 0x1e8c], 0
lea ebx, [ebx + 4]
push 0x49d3c0
mov dword [esi + 0x20], ecx
call dword [sym.imp.ADVAPI32.dll_RegisterTraceGuidsW]
mov esi, dword [esi]
test esi, esi
jne 0x49d9f0
xor ebx, ebx
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov ecx, edi
call fcn.0055fe7e
xor eax, eax
mov dword [ebp - 0x1e98], ebx
push eax
push 0x5c6930
lea ecx, [ebp - 0x1ea8]
mov dword [ebp - 0x1e94], 7
mov word [ebp - 0x1ea8], ax
call fcn.004035d0
push 0x208
lea eax, [ebp - 0x830]
mov dword [ebp - 4], ebx
push ebx
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x1460]
push ebx
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0xc40]
push ebx
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x628]
push ebx
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x1870]
push ebx
push eax
call fcn.00571c00
add esp, 0x3c
lea ecx, [ebp - 0x2104]
call fcn.0055b16f
lea ecx, [ebp - 0x20f0]
mov byte [ebp - 4], 1
call fcn.0055b16f
lea ecx, [ebp - 0x20c0]
mov byte [ebp - 4], 2
call fcn.004855c0
lea eax, [ebp - 0x20c0]
mov byte [ebp - 4], 3
push eax
mov ecx, edi
call fcn.00560076
cmp byte [ebp - 0x206c], bl
jne 0x49db19
mov ebx, 0x8001006d
mov dword [0x6183ec], 0x6d
jmp 0x49db69
movzx eax, byte [ebp - 0x206b]
mov dword [edi + 0xe0], eax
movzx eax, byte [ebp - 0x2065]
mov dword [edi + 0x11c], eax
call fcn.0052ee40
push str.Windows_NT_x86
lea ecx, [eax + 0x144]
call fcn.004049b0
movzx edx, al
lea ecx, [ebp - 0x2060]
call fcn.0053c070
mov dword [edi + 0x10c], eax
movzx eax, byte [ebp - 0x2064]
mov dword [edi + 0x120], eax
call fcn.0052ee40
mov ecx, eax
call fcn.005349c0
test eax, eax
je 0x49dbf8
cmp dword [edi + 0xe0], 1
jne 0x49dbe9
push 0xf003f
push 0
push 0
mov dword [ebp - 0x20cc], 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov esi, eax
test esi, esi
je 0x49dbd8
push 4
push str.SPOOLER
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov ecx, eax
mov eax, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test ecx, ecx
je 0x49dbcc
push ecx
call eax
mov eax, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x20cc], 1
push esi
call eax
cmp dword [ebp - 0x20cc], 0
jne 0x49dbf8
mov ebx, 0x8001006a
mov dword [0x6183ec], 0x6a
jmp 0x49dbf8
mov ebx, 0x80010069
mov dword [0x6183ec], 0x69
push 0x104
lea eax, [ebp - 0x628]
mov ecx, edi
push eax
push str.setup.ini
call fcn.004a0440
push 0x208
lea eax, [ebp - 0xe48]
push 0
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0xe48]
mov ecx, edi
push 0x104
push eax
push str.MISC
call fcn.004a0440
lea eax, [ebp - 0xe48]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [ebp - 0xe48]
push str.InsDrv.ini
push eax
call esi
test ebx, ebx
jne 0x49e151
push 0x208
lea eax, [ebp - 0x1050]
push ebx
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0x1050]
push str.Global_
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str.gh_Canon_OIP_PrinterDriverCommonMutex
lea eax, [ebp - 0x1050]
push eax
call esi
lea eax, [ebp - 0x1050]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
test esi, esi
je 0x49dcf7
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x49dcd8
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov ebx, 0x80010064
mov dword [0x6183ec], 0x64
jmp 0x49dd14
cmp eax, 5
jne 0x49dd0e
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov ebx, 0x80010064
mov dword [0x6183ec], 0x64
jmp 0x49dd14
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, 0x80010064
mov dword [0x6183ec], 0x64
jmp 0x49dd14
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
jne 0x49e151
push 0x208
lea eax, [ebp - 0x1258]
mov dword [ebp - 0x20d4], ebx
push ebx
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0x1258]
push str.Global_
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str.h_PrinterDriver_Installer
lea eax, [ebp - 0x1258]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [ebp - 0x1258]
push eax
push ebx
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
test eax, eax
je 0x49dd77
push eax
call esi
jmp 0x49ddb0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
je 0x49ddb0
push str.h_PrinterDriver_Installer
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
test esi, esi
je 0x49ddb0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x49dda9
cmp eax, 5
jne 0x49ddc5
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, 0x80010064
mov dword [0x6183ec], 0x64
mov dword [ebp - 0x20d4], ebx
cmp bx, 0x64
jne 0x49de39
push 1
push str.h_iWEMC_DRM_PrinterDriver_Installer
mov ecx, edi
call fcn.004a00e0
test eax, eax
je 0x49de39
lea eax, [ebp - 0x628]
mov dword [0x6183ec], 0x64
push eax
push 0x104
lea eax, [ebp - 0x1870]
push eax
push 0x5ca378
push str.CheckiWEMC_DRM
push str.ModuleInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x5ca984
lea eax, [ebp - 0x1870]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x49de2f
mov ebx, 0x80010064
jmp 0x49e157
xor ebx, ebx
mov dword [ebp - 0x20d4], ebx
jmp 0x49de41
test ebx, ebx
jne 0x49e151
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0x420]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 0x104
jge 0x49deca
lea eax, [ebp - 0x420]
push eax
push 0x104
push eax
call fcn.005746e6
add esp, 0xc
mov ecx, 0x5ca15c
call fcn.00405860
mov esi, eax
test esi, esi
je 0x49deca
push str.GetLongPathNameW
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x49dec3
push 0x104
lea ecx, [ebp - 0x420]
push ecx
push ecx
call eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 0xdc
jl 0x49def2
mov ebx, 0x80010065
mov dword [0x6183ec], 0x65
jmp 0x49e14f
call fcn.0052ee40
mov ecx, str.Kernel32.dll
mov dword [ebp - 0x20c4], 0
call fcn.00405860
mov esi, eax
test esi, esi
je 0x49dfa3
push str.IsWow64Process2
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push esi
mov dword [ebp - 0x20d0], eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, dword [ebp - 0x20d0]
test esi, esi
je 0x49dfa3
lea eax, [ebp - 0x20c8]
mov dword [ebp - 0x20cc], 0
push eax
lea eax, [ebp - 0x20cc]
mov dword [ebp - 0x20c8], 0
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
test eax, eax
je 0x49dfb7
mov eax, 0x14c
cmp ax, word [ebp - 0x20cc]
jne 0x49dfb7
mov eax, dword [ebp - 0x20c8]
mov ecx, 0x8664
cmp cx, ax
je 0x49dfc0
mov ecx, 0xaa64
cmp cx, ax
jne 0x49dfb7
mov ebx, 0x80010008
mov dword [0x6183ec], 8
jmp 0x49e14f
lea eax, [ebp - 0x20c4]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
cmp dword [ebp - 0x20c4], 0
je 0x49dfd4
mov ebx, 0x80010008
mov dword [0x6183ec], 8
jmp 0x49e14f
lea eax, [ebp - 0x20c8]
mov word [ebp - 0x1e8c], 0x500
xor esi, esi
push eax
push 8
mov dword [ebp - 0x20c8], esi
mov dword [ebp - 0x20c4], esi
mov dword [ebp - 0x1e90], esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
jne 0x49e01f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x78
jne 0x49e140
jmp 0x49e14f
lea eax, [ebp - 0x20c4]
push eax
push 0
push 0
push 2
push dword [ebp - 0x20c8]
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
jne 0x49e058
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x49e058
push dword [ebp - 0x20c8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x49e140
push dword [ebp - 0x20c4]
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [ebp - 0x20cc], eax
test eax, eax
je 0x49e130
lea ecx, [ebp - 0x20c4]
push ecx
push dword [ebp - 0x20c4]
push eax
push 2
push dword [ebp - 0x20c8]
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
je 0x49e124
lea eax, [ebp - 0x20d0]
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push 0x220
push 0x20
push 2
lea eax, [ebp - 0x1e90]
push eax
call dword [sym.imp.ADVAPI32.dll_AllocateAndInitializeSid]
test eax, eax
je 0x49e124
mov eax, dword [ebp - 0x20cc]
cmp dword [eax], esi
jbe 0x49e118
mov edi, dword [ebp - 0x20cc]
add eax, 4
mov dword [ebp - 0x20dc], eax
xor ebx, ebx
push dword [ebp - 0x20d0]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_EqualSid]
test eax, eax
mov eax, 1
cmovne esi, eax
mov eax, dword [ebp - 0x20dc]
inc ebx
add eax, 8
mov dword [ebp - 0x20dc], eax
cmp ebx, dword [edi]
jb 0x49e0e0
mov edi, dword [ebp - 0x20d8]
mov ebx, dword [ebp - 0x20d4]
push dword [ebp - 0x20d0]
call dword [sym.imp.ADVAPI32.dll_FreeSid]
push dword [ebp - 0x20cc]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push dword [ebp - 0x20c8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
jne 0x49e14f
mov ebx, 0x80010035
mov dword [0x6183ec], 0x35
test ebx, ebx
jns 0x49e57d
lea eax, [ebp - 0x628]
mov dword [ebp - 0x20d8], ebx
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp eax, 1
jne 0x49e4b4
push 0x208
lea eax, [ebp - 0xa38]
push 0
push eax
call fcn.00571c00
add esp, 0xc
mov dword [ebp - 0x1eb0], 0
xor eax, eax
mov dword [ebp - 0x1eac], 7
lea ecx, [ebp - 0x628]
mov word [ebp - 0x1ec0], ax
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x49e1b0
sub ecx, edx
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x1ec0]
call fcn.004035d0
lea eax, [ebp - 0x20f0]
mov byte [ebp - 4], 4
push eax
lea eax, [ebp - 0x2104]
mov ecx, edi
push eax
lea eax, [ebp - 0x1ea8]
push eax
lea eax, [ebp - 0x1ec0]
push eax
call fcn.0049ef90
mov byte [ebp - 4], 3
mov esi, eax
mov edx, dword [ebp - 0x1eac]
cmp edx, 8
jb 0x49e23f
mov ecx, dword [ebp - 0x1ec0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x49e235
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x49eec3
push edx
push ecx
call fcn.0056deb6
add esp, 8
test esi, esi
jne 0x49e4ad
push 0x104
lea eax, [ebp - 0xa38]
mov ecx, edi
push eax
push str.MISC
call fcn.004a0440
lea eax, [ebp - 0xa38]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
mov eax, dword [ebp - 0x20fc]
test eax, eax
jle 0x49e3d1
cmp eax, dword [ebp - 0x20e8]
jne 0x49e3d1
lea ecx, [ebp - 0x1ec0]
call fcn.0042f550
lea eax, [ebp - 0x20f0]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x2104]
push eax
call fcn.0042f7b0
mov esi, eax
test esi, esi
jne 0x49e3b6
push 0xaa
push eax
lea eax, [ebp - 0xbc]
push eax
call fcn.00571c00
add esp, 0xc
lea ecx, [ebp - 0x20cc]
call fcn.00405f70
lea eax, [ebp - 0x1ec0]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0x20c0]
push eax
call fcn.0049f740
lea ecx, [ebp - 0x20d0]
push ecx
lea ecx, [ebp - 0xbc]
push ecx
push eax
lea ecx, [ebp - 0x1ec0]
call fcn.0042f9f0
cmp dword [ebp - 0x1e94], 8
lea edx, [ebp - 0x1ea8]
jb 0x49e320
mov edx, dword [ebp - 0x1ea8]
test edx, edx
jne 0x49e320
xor ecx, ecx
jmp 0x49e334
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x49e325
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x20cc]
call fcn.00403bb0
lea eax, [ebp - 0xbc]
push eax
push 0x5c80ec
lea ecx, [ebp - 0x20cc]
call fcn.00446ca0
mov esi, dword [ebp - 0x20cc]
lea eax, [ebp - 0xa38]
push esi
push str.Resource_
push eax
lea eax, [ebp - 0x830]
push 0x5d09a4
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [ebp - 0x830]
mov ecx, edi
push eax
call fcn.004a0230
mov dword [ebp - 0x20d0], eax
add esi, 0xfffffff0
mov byte [ebp - 4], 5
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x49e3b0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x20d0]
lea ecx, [ebp - 0x1ec0]
mov byte [ebp - 4], 3
call fcn.0042f5b0
test esi, esi
cmovns esi, ebx
mov ebx, esi
jmp 0x49e4d5
cmp dword [ebp - 0x1e94], 8
lea eax, [ebp - 0x1ea8]
push 0xffffffffffffffff
cmovae eax, dword [ebp - 0x1ea8]
push eax
lea eax, [ebp - 0xa38]
push 0x104
push eax
call fcn.005819f4
add esp, 0x10
lea eax, [ebp - 0xa38]
xor esi, esi
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x49e49c
mov eax, dword [edi + 0xe8]
test eax, eax
je 0x49e42a
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [edi + 0xe8], esi
push 8
push 0
lea eax, [ebp - 0xa38]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov dword [ebp - 0x20d0], eax
mov dword [edi + 0xe8], eax
test eax, eax
je 0x49e484
cmp dword [edi + 0xe4], esi
jne 0x49e46d
call fcn.0055f2f5
mov eax, dword [eax + 8]
mov dword [edi + 0xe4], eax
mov eax, dword [edi + 0xe8]
mov dword [ebp - 0x20d0], eax
call fcn.0055f2f5
mov ecx, dword [ebp - 0x20d0]
test esi, esi
cmovns esi, ebx
mov dword [eax + 0xc], ecx
mov ebx, esi
jmp 0x49e4d5
mov esi, 0x80010047
mov dword [0x6183ec], 0x47
test esi, esi
cmovns esi, ebx
mov ebx, esi
jmp 0x49e4d5
mov esi, 0x80010060
mov dword [0x6183ec], 0x60
test esi, esi
cmovns esi, ebx
mov ebx, esi
jmp 0x49e4d5
push str.setup.ini
lea eax, [ebp - 0xc40]
mov dword [0x6183ec], 0xc
push eax
mov ebx, 0x8001000c
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov eax, dword [ebp - 0x20d8]
cmp ax, 0x69
jne 0x49e57d
mov ebx, 0x80010069
mov dword [0x6183ec], 0x69
cmp bx, 0x69
je 0x49e569
lea eax, [ebp - 0x20c0]
mov ecx, edi
push eax
push ebx
call fcn.004a1cf0
cmp dword [edi + 0xdc], 0
mov ebx, eax
je 0x49e569
push 0x80
lea eax, [ebp - 0x90]
push 0
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0xe48]
push eax
push 0x40
lea eax, [ebp - 0x90]
push eax
push 0x5c6930
push str.PDL_TYPE
push str.Installer_Info
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, dword [edi + 0xd0]
lea eax, [ebp - 0x90]
push eax
push str.PDL_TYPE
mov ecx, dword [ecx + 0x1c]
call fcn.004f6860
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x49eec8
jmp 0x49e988
test ebx, ebx
jne 0x49e4f4
push ebx
push 0x104
lea eax, [ebp - 0x1460]
mov ecx, edi
push eax
push str.setup.ini
call fcn.004a0610
mov ebx, eax
test ebx, ebx
jns 0x49e5ba
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea eax, [ebp - 0xc40]
push str.setup.ini
push eax
call esi
jmp 0x49e5eb
lea ecx, [ebp - 0x1460]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x49e5c3
sub ecx, edx
lea eax, [ebp - 0x1460]
sar ecx, 1
push ecx
push eax
lea ecx, [edi + 0xf0]
call fcn.004035d0
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
test ebx, ebx
jne 0x49e4f4
xor eax, eax
mov dword [ebp - 0x1eb0], ebx
lea ecx, [ebp - 0x628]
mov dword [ebp - 0x1eac], 7
mov word [ebp - 0x1ec0], ax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x49e615
sub ecx, edx
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x1ec0]
call fcn.004035d0
lea eax, [ebp - 0x20f0]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x2104]
mov ecx, edi
push eax
lea eax, [ebp - 0x1ea8]
push eax
lea eax, [ebp - 0x1ec0]
push eax
call fcn.0049ef90
mov byte [ebp - 4], 3
mov ebx, eax
mov edx, dword [ebp - 0x1eac]
cmp edx, 8
jb 0x49e6a4
mov ecx, dword [ebp - 0x1ec0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x49e69a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x49eed2
push edx
push ecx
call fcn.0056deb6
add esp, 8
test ebx, ebx
jne 0x49e4f4
cmp dword [edi + 0x124], ebx
je 0x49e6de
mov eax, dword [ebp - 0x20fc]
test eax, eax
jle 0x49e6ca
cmp eax, dword [ebp - 0x20e8]
je 0x49e762
mov ebx, 0x80010060
mov dword [0x6183ec], 0x60
jmp 0x49e4f4
cmp dword [ebp - 0x1e94], 8
lea ecx, [ebp - 0x830]
push 1
push 0x104
lea eax, [ebp - 0x1ea8]
cmovae eax, dword [ebp - 0x1ea8]
push ecx
push eax
mov ecx, edi
call fcn.004a0610
test eax, eax
jns 0x49e73e
cmp dword [ebp - 0x1e94], 8
lea eax, [ebp - 0x1ea8]
mov ebx, 0x80010060
mov dword [0x6183ec], 0x60
cmovae eax, dword [ebp - 0x1ea8]
push eax
lea eax, [ebp - 0xc40]
push eax
call esi
jmp 0x49e4f4
lea eax, [ebp - 0x830]
mov ecx, edi
push eax
call fcn.004a0230
mov ebx, eax
mov eax, dword [edi + 0xe8]
mov dword [edi + 0xec], eax
test ebx, ebx
jne 0x49e4f4
mov ecx, edi
call fcn.0049fb10
mov ebx, eax
test ebx, ebx
jne 0x49e4f4
cmp dword [edi + 0x124], eax
je 0x49e946
mov ecx, dword [edi + 0xd0]
lea eax, [ebp - 0x20f0]
push eax
lea eax, [ebp - 0x2104]
push eax
mov ecx, dword [ecx + 0x38]
call fcn.0042f7b0
mov ebx, eax
test ebx, ebx
jne 0x49e4f4
cmp dword [edi + 0x124], eax
je 0x49e946
mov ecx, dword [edi + 0xd0]
lea eax, [ebp - 0x20f0]
push eax
lea eax, [ebp - 0x2104]
push eax
mov ecx, dword [ecx + 0x3c]
call fcn.0042ff00
mov ebx, eax
test ebx, ebx
jne 0x49e4f4
cmp dword [edi + 0x124], eax
je 0x49e946
push 0x208
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.00571c00
add esp, 0xc
lea eax, [ebp - 0x218]
mov ecx, edi
push 0x104
push eax
push str.MISC
call fcn.004a0440
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
cmp dword [ebp - 0x1e94], 8
lea eax, [ebp - 0x1ea8]
lea ecx, [ebp - 0x20cc]
cmovae eax, dword [ebp - 0x1ea8]
push eax
call fcn.00403320
push str.neutral
push 0x5c80ec
lea ecx, [ebp - 0x20cc]
mov byte [ebp - 4], 8
call fcn.00446ca0
push dword [ebp - 0x20cc]
lea eax, [ebp - 0x218]
push str.Resource_
push eax
lea eax, [ebp - 0x830]
push 0x5d09a4
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [ebp - 0x830]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp eax, 1
jne 0x49e8ba
push 8
push ebx
lea eax, [ebp - 0x830]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov dword [edi + 0xec], eax
test eax, eax
jne 0x49e8c9
mov ebx, 0x80010047
mov dword [0x6183ec], 0x47
jmp 0x49e8c9
mov ebx, 0x80010060
mov dword [0x6183ec], 0x60
mov byte [ebp - 4], 3
or eax, 0xffffffff
mov edx, dword [ebp - 0x20cc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x49e8eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
jne 0x49e4f4
cmp dword [edi + 0x124], ebx
je 0x49e946
mov eax, dword [edi + 0xd0]
push dword [eax + 0x38]
lea eax, [ebp - 0x20c0]
push eax
call fcn.0049f740
mov ecx, dword [edi + 0xd0]
push eax
mov ecx, dword [ecx + 0x3c]
call fcn.0042f4d0
test eax, eax
je 0x49e6ca
add eax, 0x104
mov ecx, edi
push eax
call fcn.004a0230
mov ebx, eax
test ebx, ebx
jne 0x49e4f4
cmp dword [edi + 0x124], eax
jne 0x49e95e
mov ecx, dword [edi + 0xd0]
push 0x5ca378
push str.DWEL
mov ecx, dword [ecx + 0x1c]
call fcn.004f6860
lea eax, [ebp - 0x20c0]
mov dword [edi + 0x110], 1
push eax
mov ecx, edi
call fcn.004a09e0
mov ecx, dword [edi + 0xcc]
call fcn.00520100
mov ebx, eax
jmp 0x49e569
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x20c4], esi
mov byte [ebp - 4], 9
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x49eed7
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20c8], eax
movzx eax, bx
add eax, 0xfffffffe
mov byte [ebp - 4], 0xa
cmp eax, 0x6b
ja case.0x49e9d1.4
movzx eax, byte [eax + 0x49ef1c]
jmp dword [eax*4 + 0x49eee8]
cmp dword [edi + 0xe8], 0
lea ecx, [ebp - 0x20c8]
push 1
je 0x49e9f9
call fcn.00403020
lea eax, [ebp - 0xc40]
push eax
push 0x19
jmp 0x49ea0a
call fcn.00403020
lea eax, [ebp - 0xc40]
push eax
push 0x9c8
lea eax, [ebp - 0x20c4]
push eax
call fcn.0040c010
add esp, 0xc
cmp dword [edi + 0xe0], 0
mov esi, dword [ebp - 0x20c4]
jne 0x49ed84
push 0x30
push dword [ebp - 0x20c8]
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp case.0x49e9d1.4
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0x9ca
lea ecx, [ebp - 0x20c4]
call fcn.00403020
jmp 0x49ea19
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0x9cb
lea ecx, [ebp - 0x20c4]
call fcn.00403020
jmp 0x49ea19
push 0x9cc
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0x9c6
lea ecx, [ebp - 0x20c4]
call fcn.00403020
cmp dword [edi + 0xe0], 0
mov esi, dword [ebp - 0x20c4]
jne 0x49ed84
push 0x10
push dword [ebp - 0x20c8]
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp case.0x49e9d1.4
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
lea eax, [ebp - 0x20c4]
push 0x9cd
push eax
call fcn.0040c010
add esp, 8
jmp 0x49ea19
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0xa39
lea ecx, [ebp - 0x20c4]
call fcn.00403020
cmp dword [edi + 0xe0], 0
mov esi, dword [ebp - 0x20c4]
jne 0x49eb2e
push 0x30
push dword [ebp - 0x20c8]
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x49eb3c
push esi
push 0x6185b4
call fcn.0048a7e0
add esp, 8
push 0x208
lea eax, [ebp - 0x1a78]
push 0
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x1668]
push 0
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x1e88]
push 0
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x1c80]
push 0
push eax
call fcn.00571c00
add esp, 0x3c
call fcn.0052ee40
lea eax, [ebp - 0x20cc]
mov dword [ebp - 0x20cc], 0
push eax
push 0x26
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
js 0x49ec04
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x20cc]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea eax, [ebp - 0x20d0]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x49ec04
mov eax, dword [ebp - 0x20d0]
push dword [ebp - 0x20cc]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov eax, dword [ebp - 0x20d0]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
push str.Canon_
lea eax, [ebp - 0x218]
push eax
push 0x5c6c90
push 0xffffffffffffffff
push 0x104
push eax
call fcn.00437f50
push str.InstTemp_
lea eax, [ebp - 0x218]
push eax
push 0x5c70f4
push 0xffffffffffffffff
lea eax, [ebp - 0x1a78]
push 0x104
push eax
call fcn.00437f50
push str.InstRestore
lea eax, [ebp - 0x218]
push eax
push 0x5ca318
push 0xffffffffffffffff
lea eax, [ebp - 0x1668]
push 0x104
push eax
call fcn.00437f50
add esp, 0x48
lea eax, [ebp - 0x218]
push str.PrinterDriver_
push eax
push 0x5c70f4
push 0xffffffffffffffff
lea eax, [ebp - 0x1e88]
push 0x104
push eax
call fcn.00437f50
push str.color_
lea eax, [ebp - 0x1668]
push eax
push 0x5c70f4
push 0xffffffffffffffff
lea eax, [ebp - 0x1c80]
push 0x104
push eax
call fcn.00437f50
mov edi, dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
lea eax, [ebp - 0x1a78]
add esp, 0x30
push eax
call edi
lea eax, [ebp - 0x1c80]
push eax
call edi
lea eax, [ebp - 0x1668]
push eax
call edi
lea eax, [ebp - 0x1e88]
push eax
call edi
jmp case.0x49e9d1.4
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0xa2e
lea ecx, [ebp - 0x20c4]
call fcn.00403020
jmp 0x49ea19
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0x23
lea ecx, [ebp - 0x20c4]
call fcn.00403020
jmp 0x49ea19
push 0x9cc
lea ecx, [ebp - 0x20c8]
call fcn.00403020
push 0xa8c
lea ecx, [ebp - 0x20c4]
call fcn.00403020
mov esi, dword [ebp - 0x20c4]
push 0x10
push dword [ebp - 0x20c8]
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp case.0x49e9d1.4
push 0xa8d
lea ecx, [ebp - 0x20c4]
call fcn.00403020
cmp dword [edi + 0xe0], 0
je 0x49ee4d
mov esi, dword [ebp - 0x20c4]
push esi
push 0x6185b4
call fcn.0048a7e0
add esp, 8
mov byte [ebp - 4], 9
or ebx, 0xffffffff
mov edx, dword [ebp - 0x20c8]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x49edb6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x49edcf
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x20c0]
call fcn.00485950
lea ecx, [ebp - 0x20f0]
call fcn.0055b186
lea ecx, [ebp - 0x2104]
call fcn.0055b186
mov edx, dword [ebp - 0x1e94]
cmp edx, 8
jb 0x49eea5
mov ecx, dword [ebp - 0x1ea8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x49ee9b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x49eee1
jmp 0x49ee9b
push 0xa8f
lea ecx, [ebp - 0x20c4]
call fcn.00403020
cmp dword [edi + 0xe0], 0
jne 0x49ed7e
mov esi, dword [ebp - 0x20c4]
jmp case.0x49e9d1.4
push 0x11
lea ecx, [ebp - 0x20c4]
call fcn.00403020
push 1
lea ecx, [ebp - 0x20c8]
call fcn.00403020
cmp dword [edi + 0xe0], 0
jne 0x49ed7e
mov esi, dword [ebp - 0x20c4]
push 0x30
push dword [ebp - 0x20c8]
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp case.0x49e9d1.4
push edx
push ecx
call fcn.0056deb6
add esp, 8
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 - 0x10]
xor ecx, ebp
call fcn.0056d977
mov esp, ebp
pop ebp
ret
call fcn.00574908
push 0x80004005
call fcn.004013a0
call fcn.00574908
push 0x80004005
call fcn.004013a0
call fcn.00574908
nop
out dx, eax
ljmp 1402