Function at 0x4031e0
Capabilities:
Accept command line arguments
Check mutex on windows
Check os version
Delete file
Delete registry key
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa34
mov eax, dword [0x41e008]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push str.USER32.DLL
mov esi, ecx
mov dword [ebp - 0xa10], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x403222
push str.SetProcessDPIAware
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x403222
call eax
mov ecx, str.RICHED20.DLL
call fcn.00401030
push 0x105
lea edi, [esi + 0x35c]
mov dword [esi + 0x4bc8], eax
push edi
push 0
mov dword [esi + 0x4bbc], 0
mov dword [esi + 0x4bc0], 0
mov dword [esi + 0x4bc4], 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x40326b
mov word [edi], ax
mov eax, edi
mov edx, eax
movzx ecx, word [eax]
test cx, cx
je 0x403291
movzx ecx, cx
add eax, 2
cmp ecx, 0x5c
je 0x403287
cmp ecx, 0x3a
jne 0x403289
mov edx, eax
movzx ecx, word [eax]
test cx, cx
jne 0x403277
mov dword [esi + 0x770], edx
test edx, edx
je 0x4032a0
xor eax, eax
mov word [edx], ax
push edi
lea ebx, [esi + 0x566]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str.SETUP.INI
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x114
lea edi, [esi + 0x10]
push 0
push edi
call fcn.004069c0
add esp, 0xc
mov dword [edi], 0x114
push edi
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esi + 0x20], 2
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [sym.imp.KERNEL32.dll_lstrcpynW]
jne 0x403710
cmp dword [esi + 0x14], 5
jb 0x403710
mov eax, dword [ebp + 0x10]
cmp word [eax], 0
je 0x403401
lea eax, [ebp - 0xa14]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov ecx, dword [ebp - 0xa14]
lea ebx, [esi + 0x124]
mov edi, 1
mov dword [ebp - 0xa0c], eax
mov dword [esi + 8], ebx
cmp ecx, edi
jle 0x403401
nop dword [eax]
mov eax, dword [eax + edi*4]
mov dword [esi + 4], eax
cmp word [eax], 0x2d
je 0x403369
push eax
push ebx
mov dword [esi + 0x330], 1
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov ecx, dword [ebp - 0xa14]
jmp case.0x403381.69
add eax, 2
mov dword [esi + 4], eax
movzx eax, word [eax]
add eax, 0xffffffbf
cmp eax, 0x32
ja case.0x403381.69
movzx eax, byte [eax + 0x40410c]
jmp dword [eax*4 + 0x4040e4]
mov dword [esi + 0x334], 1
jmp case.0x403381.69
mov dword [esi + 0x338], 1
jmp case.0x403381.69
mov dword [esi + 0x33c], 1
jmp case.0x403381.69
mov dword [esi + 0x340], 1
jmp case.0x403381.69
mov dword [esi + 0x45b4], 1
jmp case.0x403381.69
mov dword [esi + 0x45b4], 2
jmp case.0x403381.69
mov dword [esi + 0x45b4], 3
jmp case.0x403381.69
mov dword [esi + 0x45b4], 4
jmp case.0x403381.69
mov dword [esi + 0x344], 1
mov eax, dword [ebp - 0xa0c]
inc edi
cmp edi, ecx
jl 0x403340
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
lea ebx, [esi + 0x794]
push str.Global_
push ebx
call edi
push str.IJPLMINSTALLER
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
cmp dword [esi + 0x334], 0
je 0x403436
push str._UNINSTALL
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push ebx
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [esi + 0xc], eax
test eax, eax
je 0x403704
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x403704
cmp dword [esi + 0x334], 0
jne 0x40347c
cmp dword [esi + 0x344], 0
jne 0x40347c
cmp dword [esi + 0x330], 0
je 0x403704
cmp dword [esi + 0x330], 0
je 0x4034ce
push 0
push str.APPLICATION_COMPLETED
lea edx, [esi + 0x124]
call fcn.00401220
lea eax, [esi + 0x348]
push eax
push str.PRIMARY_LANGID
lea edx, [esi + 0x124]
call fcn.004012d0
lea eax, [esi + 0x34c]
push eax
push str.SUB_LANGID
lea edx, [esi + 0x124]
call fcn.004012d0
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
add esp, 0x18
call fcn.00402550
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
cmp dword [esi + 0x330], 0
mov word [esi + 0x350], ax
je 0x40350b
cmp dword [esi + 0x348], 0
je 0x40350b
mov ax, word [esi + 0x34c]
shl ax, 0xa
or ax, word [esi + 0x348]
mov word [esi + 0x350], ax
mov eax, dword [str.English]
mov dword [esi + 0x354], 0x41e780
cmp dword [str.English], 0
mov dword [0x41f520], eax
je 0x40358e
mov dword [ebp - 0xa0c], 0x400
nop dword [eax]
nop word [eax + eax]
mov edx, dword [esi + 0x354]
movzx ecx, word [edx]
cmp cx, word [ebp - 0xa0c]
jae 0x403566
mov ax, word [esi + 0x350]
xor ax, cx
mov ecx, 0x3ff
test cx, ax
jmp 0x40356d
cmp cx, word [esi + 0x350]
je 0x403580
lea eax, [edx + 8]
mov dword [esi + 0x354], eax
cmp dword [eax + 4], 0
jne 0x403540
jmp 0x40358e
mov eax, dword [esi + 0x354]
mov eax, dword [eax + 4]
mov dword [0x41f520], eax
push 0x105
push 0x41f740
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push ecx
mov ecx, 0x41f740
call fcn.00401180
add esp, 4
mov dword [esi + 4], eax
push str.RESMESSAGE_
push eax
call edi
mov eax, dword [0x41f520]
test eax, eax
je 0x4035ce
push eax
push 0x41f740
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push str.MESSAGE.INI
push 0x41f740
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x41f740
push 0
push str.RTLREADING
push str.STRING
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push ecx
mov edx, 0x41f530
mov dword [0x41f52c], eax
mov ecx, str.APPNAME
call fcn.00401530
lea edx, [esi + 0x23a0]
mov ecx, str.PSVI03
call fcn.00401530
lea edx, [esi + 0x2ba0]
mov ecx, str.PSVI04
call fcn.00401530
lea edx, [esi + 0x33a0]
mov ecx, str.PSVI05
call fcn.00401530
lea edx, [esi + 0x3ba0]
mov ecx, str.PSVI08
call fcn.00401530
add esp, 4
call fcn.004019f0
test eax, eax
jne 0x40383f
mov eax, dword [esi + 0x334]
test eax, eax
jne 0x403699
cmp dword [esi + 0x344], eax
jne 0x403695
lea edi, [esi + 0xf94]
push ecx
mov edx, edi
mov ecx, str.PSVI06
call fcn.00401530
mov eax, dword [sym.imp.USER32.dll_wsprintfW]
add esp, 4
push 0x41f530
push edi
push ebx
call eax
add esp, 0xc
jmp 0x4036d6
test eax, eax
je 0x4036aa
cmp dword [esi + 0x344], 0
jne 0x4036aa
push ecx
mov ecx, str.PSVI09
jmp 0x4036b0
push ecx
mov ecx, str.PSVI14
lea edi, [esi + 0xf94]
mov edx, edi
call fcn.00401530
mov eax, dword [sym.imp.USER32.dll_wsprintfW]
add esp, 4
push 0x41f530
push 0x41f530
push edi
push ebx
call eax
add esp, 0x10
cmp dword [0x41f52c], 0
mov ecx, 0x180010
mov eax, 0x10
cmovne eax, ecx
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxW]
push 0x41f530
push ebx
push 0
call eax
mov dword [0x41e898], 0
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [sym.imp.KERNEL32.dll_lstrcpynW]
cmp dword [esi + 0x334], 0
je 0x4037ae
cmp dword [esi + 0x338], 0
jne 0x4037ae
cmp dword [0x41e898], 0
push 0x400
je 0x4040b1
lea eax, [esi + 0x23a0]
push eax
lea edi, [esi + 0x794]
push edi
call ecx
test eax, eax
jne 0x403755
xor eax, eax
mov word [edi], ax
push 0x400
lea eax, [esi + 0x33a0]
push eax
mov eax, dword [sym.imp.KERNEL32.dll_lstrcpynW]
lea edi, [esi + 0xf94]
push edi
call eax
test eax, eax
je 0x4037ae
cmp word [esi + 0x794], 0
lea ecx, [esi + 0x794]
je 0x4037ae
cmp word [edi], 0
je 0x4037ae
cmp dword [0x41f52c], 0
mov edx, 0x180040
mov eax, 0x40
cmovne eax, edx
push eax
push edi
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [esi + 0x358], eax
cmp dword [esi + 0x330], 0
je 0x4037cc
push 1
push str.APPLICATION_COMPLETED
lea edx, [esi + 0x124]
call fcn.00401220
add esp, 8
mov eax, dword [esi + 0x4bc8]
test eax, eax
je 0x4037e7
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [esi + 0x4bc8], 0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4037f8
push eax
call ebx
mov dword [esi + 0xc], 0
mov eax, dword [0x41f738]
mov esi, dword [sym.imp.USER32.dll_DestroyIcon]
test eax, eax
je 0x403814
push eax
call esi
mov dword [0x41f738], 0
mov eax, dword [0x41f528]
test eax, eax
je 0x40382a
push eax
call esi
mov dword [0x41f738], 0
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00404aff
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [sym.imp.USER32.dll_LoadImageW]
push 0
push 0x10
push 0x10
push 1
push 0x6b
push dword [ebp - 0xa10]
call edi
push 0
push 0x30
push 0x30
push 1
push 0x6b
push dword [ebp - 0xa10]
mov dword [0x41f738], eax
call edi
cmp dword [esi + 0x344], 0
mov dword [0x41f528], eax
je 0x4038e5
mov eax, dword [sym.imp.USER32.dll_wsprintfW]
lea edi, [esi + 0xf94]
push 0x41f530
push str.Canon__s
push edi
call eax
add esp, 8
mov edx, ebx
mov ecx, str.PSVI13
call fcn.00401530
add esp, 4
mov ecx, 0x180044
cmp dword [0x41f52c], 0
mov eax, 0x44
cmovne eax, ecx
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxW]
push edi
push ebx
push 0
call eax
xor ecx, ecx
mov dword [esi + 0x358], eax
cmp eax, 6
sete cl
inc ecx
mov dword [esi + 0x4bbc], ecx
call fcn.00402ef0
jmp 0x403704
cmp dword [esi + 0x334], 0
jne 0x403939
cmp dword [esi + 0x338], 0
jne 0x403916
mov eax, dword [esi + 0x45b4]
cmp eax, 3
jne 0x403928
mov dword [esi + 0x334], 1
mov dword [esi + 0x338], 1
cmp dword [0x41e898], 0
je 0x403704
jmp 0x4039ac
cmp eax, 4
jne 0x403916
mov dword [esi + 0x334], 0
jmp 0x40390c
cmp dword [esi + 0x338], 0
jne 0x4039a2
cmp dword [esi + 0x340], 0
jne 0x4039a2
lea edi, [esi + 0xf94]
push ecx
mov edx, edi
mov ecx, str.PSVI01
call fcn.00401530
mov eax, dword [sym.imp.USER32.dll_wsprintfW]
add esp, 4
push 0x41f530
push edi
push ebx
call eax
add esp, 8
mov edx, edi
mov ecx, str.PSVI02
call fcn.00401530
add esp, 4
mov edx, ebx
push 0x34
push edi
call fcn.00401500
add esp, 8
mov dword [esi + 0x358], eax
cmp eax, 7
jne 0x403916
jmp 0x4036fa
mov dword [0x41e898], 1
cmp dword [esi + 0x334], 0
jne 0x4039c2
call fcn.004013b0
test eax, eax
jne 0x403704
lea eax, [esi + 0x77c]
push eax
push 2
push 0
lea eax, [esi + 0x566]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
mov dword [esi + 0x778], eax
cmp eax, 0xffffffff
je 0x403704
push 0x41f530
lea eax, [ebp - 0x208]
push str.Canon__s
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x208]
push 0
push 0
push 1
push eax
push 0xea60
push dword [esi + 0x778]
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdExW]
cmp dword [esi + 0x334], 0
jne 0x403a36
mov dword [esi + 0x774], str.INSTALL
jmp 0x403a40
mov dword [esi + 0x774], str.UNINSTALL
lea ebx, [esi + 0x780]
xor eax, eax
push ebx
push str.EXEC
mov word [esi + 0x1b94], ax
push dword [esi + 0x774]
push dword [esi + 0x778]
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
je 0x403ad7
mov edi, dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
lea eax, [esi + 0x2394]
push eax
push 0x100
lea ecx, [esi + 0x1794]
push ecx
push 1
push ebx
call edi
lea eax, [esi + 0x2398]
push eax
push 0x100
lea ebx, [esi + 0x1994]
push ebx
push 2
lea eax, [esi + 0x780]
push eax
call edi
lea eax, [esi + 0x239c]
push eax
push 0x400
lea edi, [esi + 0x1b94]
push edi
lea eax, [esi + 0x1794]
push eax
push 0
push dword [esi + 0x778]
call dword [sym.imp.SETUPAPI.dll_SetupGetTargetPathW]
push ebx
push edi
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
mov ecx, dword [esi + 0x778]
mov dword [0x41f524], 0
call fcn.00401f40
cmp dword [esi + 0x334], 0
mov dword [esi + 0x45b0], eax
jne 0x403b4d
test eax, eax
jne 0x403b4d
lea ecx, [esi + 0x49bc]
call fcn.00401c80
push str.AutoSend
mov edx, str.SoftwareCanonIJPLM
mov ecx, 0x80000002
call fcn.004022c0
mov dword [esi + 0x4bbc], eax
call fcn.004021e0
lea ecx, [esi + 0x4bc0]
add esp, 4
mov dword [ecx], eax
or eax, edx
mov dword [ecx + 4], edx
jne 0x403b42
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov ecx, dword [esi + 0x778]
call fcn.004020e0
cmp dword [esi + 0x334], 0
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupInstallFromInfSectionW]
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [esi + 0x790], 1
jne 0x403b79
cmp dword [esi + 0x45b0], 0
jne 0x403cd3
push str.IJPLMUI_CLOSE
call dword [sym.imp.USER32.dll_RegisterWindowMessageW]
push 0x800
mov dword [ebp - 0xa0c], eax
lea eax, [ebp - 0xa08]
push 0
push eax
mov dword [esi + 0x790], 0
call fcn.004069c0
add esp, 0xc
lea ecx, [ebp - 0xa08]
call fcn.00402fa0
test eax, eax
je 0x403c2f
xor ebx, ebx
nop dword [eax + eax]
lea eax, [ebp - 0xa08]
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov edi, eax
test edi, edi
je 0x403beb
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
cmp eax, 0xb7
jne 0x403c23
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0
push dword [ebp - 0xa0c]
push 0xffff
call dword [sym.imp.USER32.dll_PostMessageW]
push 0x1388
call dword [sym.imp.KERNEL32.dll_Sleep]
inc ebx
mov dword [esi + 0x790], 0
cmp ebx, 2
jl 0x403bc0
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupInstallFromInfSectionW]
jmp 0x403c39
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupInstallFromInfSectionW]
mov dword [esi + 0x790], 1
cmp dword [esi + 0x790], 0
jne 0x403c90
lea eax, [ebp - 0xa08]
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov edi, eax
test edi, edi
je 0x403c72
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x403c72
mov dword [esi + 0x790], 1
jmp 0x403c7c
mov dword [esi + 0x790], 0
test edi, edi
je 0x403c87
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esi + 0x790], 0
je 0x403ccd
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
lea eax, [esi + 0x35c]
push 0
push 0
push 0
push 0x401880
push 0x108
push eax
push 0x80000002
push 0x10
push dword [esi + 0x774]
push dword [esi + 0x778]
call edi
push eax
call ebx
mov dword [esi + 0x790], eax
jmp 0x403cd3
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
cmp dword [esi + 0x790], 0
je 0x403fe4
mov eax, dword [esi + 0x334]
test eax, eax
jne 0x403d00
cmp dword [esi + 0x45b0], eax
je 0x403cfc
call fcn.00401b90
jmp 0x40404f
test eax, eax
je 0x403d15
cmp word [esi + 0x1b94], 0
je 0x403d15
lea ecx, [esi + 0x1b94]
call fcn.00401960
push 0
push 0
push 0
push 0x4017e0
push 0x108
lea eax, [esi + 0x35c]
push eax
push 0x80000002
push 0x14
push dword [esi + 0x774]
push dword [esi + 0x778]
call edi
push eax
call ebx
mov dword [esi + 0x790], eax
test eax, eax
je 0x403e24
cmp dword [esi + 0x334], 0
jne 0x403e24
call fcn.004013b0
test eax, eax
jne 0x403704
call fcn.00401b90
call fcn.00402be0
mov ecx, dword [esi + 0x45b4]
call fcn.004023e0
lea ecx, [esi + 0x49bc]
call fcn.00401da0
lea edx, [ebp - 0xa0c]
lea ecx, [ebp - 0xa10]
call fcn.00401b00
test eax, eax
je 0x403dbb
call fcn.004011c0
test eax, eax
je 0x403dbb
mov edx, dword [ebp - 0xa0c]
mov ecx, dword [ebp - 0xa10]
call fcn.00401a50
push dword [esi + 0x4bbc]
mov edx, str.SoftwareCanonIJPLM
mov ecx, 0x80000002
push str.AutoSend
call fcn.00402330
add esp, 8
push dword [esi + 0x4bc4]
push dword [esi + 0x4bc0]
push ecx
call fcn.00402260
add esp, 0xc
mov edx, str.SoftwareCanonIJPLM
mov ecx, 0x80000002
push dword [esi + 0x348]
push str.PRIMARY_LANGID
call fcn.00402330
push dword [esi + 0x34c]
mov edx, str.SoftwareCanonIJPLM
mov ecx, 0x80000002
push str.SUB_LANGID
call fcn.00402330
add esp, 0x10
push 0x20a
lea edi, [esi + 0x43a0]
push 0
push edi
call fcn.004069c0
add esp, 0xc
push edi
push 0
push 0
push 0x23
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jns 0x403e52
xor eax, eax
mov word [edi], ax
push str.CanonIJPLM
push edi
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
cmp dword [esi + 0x790], 0
je 0x403fc0
cmp dword [esi + 0x334], 0
jne 0x403e80
mov ecx, edi
call fcn.00402160
jmp 0x403fc0
cmp dword [esi + 0x33c], 0
mov eax, 0x414
mov ebx, dword [sym.imp.SHELL32.dll_SHFileOperationW]
jne 0x403ee6
mov word [ebp - 0xa24], ax
lea eax, [ebp - 0xa34]
push eax
mov dword [ebp - 0xa34], 0
mov dword [ebp - 0xa30], 3
mov dword [ebp - 0xa2c], edi
mov dword [ebp - 0xa28], 0
mov dword [ebp - 0xa22], 0
mov dword [ebp - 0xa1e], 0
mov dword [ebp - 0xa1a], 0
call ebx
push 0x20a
push 0
push edi
call fcn.004069c0
add esp, 0xc
lea eax, [esi + 0x45ac]
push eax
push 0x105
push edi
push 0x41c1a0
push 0
push dword [esi + 0x778]
call dword [sym.imp.SETUPAPI.dll_SetupGetTargetPathW]
mov eax, 0x414
mov dword [ebp - 0xa34], 0
mov word [ebp - 0xa24], ax
lea eax, [ebp - 0xa34]
push eax
mov dword [ebp - 0xa30], 3
mov dword [ebp - 0xa2c], edi
mov dword [ebp - 0xa28], 0
mov dword [ebp - 0xa22], 0
mov dword [ebp - 0xa1e], 0
mov dword [ebp - 0xa1a], 0
call ebx
push str.SoftwareCanonIJPLM
push 0x80000002
call dword [sym.imp.SHLWAPI.dll_SHDeleteKeyW]
call fcn.004011c0
test eax, eax
je 0x403fc0
mov ecx, str.ADVAPI32.DLL
call fcn.00401030
mov edi, eax
test edi, edi
je 0x403fc0
push str.RegDeleteKeyExW
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x403fb9
push 0
push 0x100
push str.SoftwareCanonIJPLM
push 0x80000002
call eax
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esi + 0x334], 0
jne 0x40404f
cmp word [esi + 0x1b94], 0
je 0x40404f
lea ecx, [esi + 0x1b94]
call fcn.00401960
jmp 0x40404f
cmp dword [esi + 0x338], 0
jne 0x404045
push 0x400
lea eax, [esi + 0x3ba0]
push eax
mov eax, dword [sym.imp.KERNEL32.dll_lstrcpynW]
lea edi, [esi + 0xf94]
push edi
call eax
test eax, eax
je 0x404023
push 0x41f530
push edi
lea edi, [esi + 0x794]
push edi
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
jmp 0x40402e
xor eax, eax
mov word [edi], ax
lea edi, [esi + 0x794]
push 0x10
push 0x41f530
mov edx, edi
call fcn.00401500
add esp, 8
mov dword [esi + 0x358], eax
mov dword [0x41e898], 0
mov eax, dword [0x41f524]
test eax, eax
je 0x404065
push 0
push 0
push 0x10
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [esi + 0x45b8]
test eax, eax
je 0x40409a
push 0x1388
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [esi + 0x45b8]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
call ebx
push dword [esi + 0x778]
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
jmp 0x40370a
push dword [esi + 0x778]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
jmp 0x40370a
lea eax, [esi + 0x2ba0]
push eax
lea edi, [esi + 0xf94]
push edi
call ecx
test eax, eax
je 0x403750
push 0x41f530
lea eax, [esi + 0x794]
push edi
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
jmp 0x403755