Function at 0x40c3c0
Capabilities:
Check if file exists
Get common file path
Get file attributes
Get program files directory
Identify system language via api
Persist via run registry key
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54831b
mov eax, dword fs:[0]
push eax
mov eax, 0x2d28
call fcn.00531f30
mov eax, dword [0x5c5b9c]
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 ebx, ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x2d0c], ecx
mov ecx, dword [0x562128]
mov edx, dword [str.LANGUAGES]
mov dword [ebp - 0x74], ecx
mov ecx, dword [str.Setup]
mov dword [ebp - 0x48], ecx
mov ecx, 6
mov esi, str.ServicePacks
lea edi, [ebp - 0x244]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0x7c], edx
mov edx, dword [0x56212c]
mov dword [ebp - 0x70], edx
mov edx, dword [0x562118]
mov dword [ebp - 0x44], edx
mov edx, 7
mov ecx, edx
mov esi, str.SupportModels
lea edi, [ebp - 0x1cc]
rep movsd dword es:[edi], dword [esi]
mov ecx, 6
mov esi, str.LanguageCode
lea edi, [ebp - 0x228]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 8]
movsw word es:[edi], word [esi]
mov ecx, 0xa
mov esi, str.DriverInstallerNames
lea edi, [ebp - 0x270]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0x2cf8], eax
mov eax, dword [0x562124]
mov ecx, 0xa
mov esi, str.DriverUninstallerDir
lea edi, [ebp - 0x29c]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [str.ReadmeInfo]
mov dword [ebp - 0x78], eax
mov eax, dword [0x562130]
mov dword [ebp - 0x9c], ecx
mov ecx, dword [0x562058]
mov dword [ebp - 0x6c], eax
mov eax, dword [0x56211c]
mov dword [ebp - 0x94], ecx
mov ecx, dword [0x562060]
mov dword [ebp - 0x40], eax
mov eax, dword [0x562054]
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x98], eax
mov eax, dword [0x56205c]
movsw word es:[edi], word [esi]
mov dword [ebp - 0x90], eax
mov ax, word [0x562064]
mov ecx, edx
mov esi, str.PushScanEvent
lea edi, [ebp - 0x1e8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [str.Function]
mov dword [ebp - 0xb0], ecx
mov ecx, dword [0x562028]
mov word [ebp - 0x88], ax
mov eax, dword [0x562024]
mov dword [ebp - 0xa8], ecx
movzx ecx, word [0x562030]
mov dword [ebp - 0xac], eax
mov eax, dword [0x56202c]
mov dword [ebp - 0xa4], eax
mov eax, dword [str.Uninstaller]
mov word [ebp - 0xa0], cx
mov ecx, dword [0x56200c]
mov dword [ebp - 0x60], eax
mov eax, dword [0x562010]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [0x562014]
mov dword [ebp - 0x2d08], ebx
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], ecx
mov ecx, dword [0x56201c]
mov eax, dword [0x562018]
mov dword [ebp - 0x4c], ecx
movzx ecx, word [0x562004]
mov word [ebp - 0x64], cx
mov ecx, 8
mov esi, str.CdromStatusCheck
lea edi, [ebp - 0x20c]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x50], eax
mov eax, dword [0x562000]
mov dword [ebp - 0x68], eax
xor eax, eax
xor ecx, ecx
movsw word es:[edi], word [esi]
mov dword [ebp - 0x26f8], edx
mov dword [ebp - 0x26fc], eax
mov word [ebp - 0x270c], cx
mov dword [ebp - 4], eax
mov dword [ebp - 0x2714], edx
mov dword [ebp - 0x2718], eax
mov word [ebp - 0x2728], cx
mov dword [ebp - 0x27a0], edx
mov dword [ebp - 0x27a4], eax
mov word [ebp - 0x27b4], cx
mov dword [ebp - 0x27bc], edx
xor edx, edx
mov dword [ebp - 0x27c0], eax
mov word [ebp - 0x27d0], dx
mov dword [ebp - 0x2d1c], eax
mov dword [ebp - 0x2d18], eax
mov dword [ebp - 0x2d14], eax
lea ecx, [ebp - 0x2cf4]
mov byte [ebp - 4], 4
call fcn.0043af70
lea ecx, [ebp - 0x2d34]
mov byte [ebp - 4], 5
call fcn.0043a1a0
lea ecx, [ebp - 0x2a20]
mov byte [ebp - 4], 6
call sym.Setup.exe_public:_void___thiscall_CDeviceInfSection::constructor_void_
lea ecx, [ebp - 0x2834]
mov byte [ebp - 4], 7
call sym.Setup.exe_public:_void___thiscall_CDeviceInfSection::constructor_void_
lea ecx, [ebp - 0x29bc]
mov byte [ebp - 4], 8
call sym.Setup.exe_public:_void___thiscall_CDeviceInfSection::constructor_void_
push str.CInitInfoStorage::Init________________________IN_n
push 4
mov byte [ebp - 4], 9
call fcn.00411380
add esp, 8
cmp dword [ebx + 0x360], 0
je 0x40c683
push str.CInitInfoStorage::Init_This_class_instance_has_been_already_initialized._n
push 2
call fcn.00411380
add esp, 8
jmp 0x40f7b1
mov edi, dword [ebp - 0x2cf8]
test edi, edi
jne 0x40c6a1
push str.CInitInfoStorage::Init_Parameter_pIniFile_is_invalid._n
push 2
call fcn.00411380
add esp, 8
jmp 0x40f7b1
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40c6cd
push edi
push 1
add ebx, 0x38
push ebx
call 0x4084a0
push str.CInitInfoStorage::Init_Parameter_pIniFile_is_invalid._n
push 2
call fcn.00411380
add esp, 0x14
jmp 0x40f7b1
push 0
push 0
push 0
push 0
push 0x105
lea eax, [ebp - 0x26b8]
push eax
push 4
lea ecx, [ebp - 0x84]
push ecx
push edi
call fcn.00530997
lea eax, [ebp - 0x84]
add esp, 0x24
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40c700
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x84]
lea ecx, [ebx + 0x74]
push edx
call fcn.004026d0
lea eax, [ebp - 0x26b8]
lea edx, [eax + 2]
jmp 0x40c730
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40c730
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x26b8]
push eax
lea ecx, [ebx + 0x74]
call fcn.00405db0
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push edi
push 0
push str.EnableVisualStyle
lea ecx, [ebp - 0x48]
push ecx
call esi
test eax, eax
jne 0x40c786
push str.UxTheme.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x40c786
push str.SetThemeAppProperties
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 1
call eax
lea edx, [ebp - 0x7c]
push edx
push 0
push edi
lea ecx, [ebp - 0x2834]
call sym.Setup.exe_public:_int___thiscall_CDeviceInfSection::Init_wchar_t_const___class_CInfStringTable___wchar_t_const__
test eax, eax
je 0x40cfb2
push fcn.0043a1b0
push fcn.0043a1a0
push 3
push 0x18
lea eax, [ebp - 0x2770]
push eax
call fcn.005324f9
lea ecx, [ebp - 0x2834]
mov byte [ebp - 4], 0xa
call sym.Setup.exe_public:_int___thiscall_CDeviceInfSection::GetList_void_
mov ecx, dword [ebp + 0xc]
xor edx, edx
movzx eax, cx
cmp dx, cx
jne 0x40c80d
push edi
push edx
push str.LanguageFunction
lea eax, [ebp - 0x48]
push eax
call esi
dec eax
je 0x40c804
dec eax
je 0x40c7fc
dec eax
je 0x40c7f4
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
jmp 0x40c80a
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
jmp 0x40c80a
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLCID]
jmp 0x40c80a
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov ebx, dword [sym.imp.USER32.dll_wsprintfW]
movzx esi, ax
push esi
lea ecx, [ebp - 0x3c]
push str._04x
push ecx
call ebx
add esp, 0xc
push edi
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x7c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40c850
sub eax, edx
sar eax, 1
je 0x40c884
push 0x2c
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebp - 0x2770]
call fcn.0043a510
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x2770]
call fcn.0043a6e0
and esi, 0x3ff
push esi
lea ecx, [ebp - 0x3c]
push str._04x
push ecx
call ebx
add esp, 0xc
push edi
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x7c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40c8c2
sub eax, edx
sar eax, 1
je 0x40c8f6
push 0x2c
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebp - 0x2758]
call fcn.0043a510
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x2758]
call fcn.0043a6e0
push 0
lea ecx, [ebp - 0x3c]
push str._04x
push ecx
call ebx
add esp, 0xc
push edi
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x7c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40c930
sub eax, edx
sar eax, 1
je 0x40c964
push 0x2c
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebp - 0x2740]
call fcn.0043a510
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x2740]
call fcn.0043a6e0
lea ecx, [ebp - 0x2770]
mov dword [ebp - 0x2cfc], 0
mov dword [ebp - 0x2d00], ecx
lea ebx, [ebx]
mov esi, dword [ebp - 0x2d00]
push 0x20
mov ecx, esi
call fcn.00439de0
mov ecx, esi
call fcn.00438c50
cmp eax, 2
jne 0x40cd7e
push str._SELECT_
push 0
mov ecx, esi
call fcn.00438e80
push eax
call fcn.00531ea5
add esp, 8
test eax, eax
jne 0x40cd7e
xor edx, edx
cmp dx, word [ebp + 0x10]
je 0x40c9e5
mov si, word [ebp + 0x10]
movzx eax, si
push eax
push str.CInitInfoStorage::Init_nDefaultLangID__0x_04x_n
push 4
call fcn.00411380
add esp, 0xc
movzx ebx, si
jmp 0x40cc67
lea ecx, [ebp - 0x30]
call fcn.0043a1a0
xor edi, edi
push edi
lea ecx, [ebp - 0x2958]
mov byte [ebp - 4], 0xb
call fcn.004341a0
mov esi, 7
xor ecx, ecx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x26dc], esi
mov dword [ebp - 0x26e0], edi
mov word [ebp - 0x26f0], cx
xor edx, edx
mov dword [ebp - 0x26c0], esi
mov dword [ebp - 0x26c4], edi
mov word [ebp - 0x26d4], dx
lea ecx, [ebp - 0x2834]
mov byte [ebp - 4], 0xe
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x40cbc0
mov ebx, dword [ebp - 0x2d08]
mov edi, edi
push 0x10
lea eax, [ebp - 0x14]
push eax
push edi
lea ecx, [ebp - 0x2834]
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
call fcn.005324df
movzx ecx, ax
add esp, 0xc
push 0x2c
mov dword [ebp - 0x2d04], ecx
push edi
lea ecx, [ebp - 0x2834]
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
push eax
lea ecx, [ebp - 0x30]
call fcn.0043a510
lea ecx, [ebp - 0x30]
call fcn.00438c50
cmp eax, 3
jne 0x40cba5
push 0xffffffffffffffff
push 0
lea eax, [ebx + 0x74]
push eax
lea ecx, [ebp - 0x26f0]
call fcn.004025d0
push 1
lea ecx, [ebp - 0x30]
call fcn.00438e80
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40cac0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x26f0]
call fcn.00405db0
push 0xffffffffffffffff
push 0
lea eax, [ebx + 0x74]
push eax
lea ecx, [ebp - 0x26d4]
call fcn.004025d0
push 2
lea ecx, [ebp - 0x30]
call fcn.00438e80
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40cb00
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x26d4]
call fcn.00405db0
cmp dword [ebp - 0x26e0], 0x104
ja 0x40cfde
cmp dword [ebp - 0x26c4], 0x104
ja 0x40cfde
cmp dword [ebp - 0x26dc], 8
mov eax, dword [ebp - 0x26f0]
jae 0x40cb51
lea eax, [ebp - 0x26f0]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40cba5
cmp dword [ebp - 0x26c0], 8
mov eax, dword [ebp - 0x26d4]
jae 0x40cb72
lea eax, [ebp - 0x26d4]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40cba5
push 0x20
lea ecx, [ebp - 0x30]
call fcn.00439de0
push 0
lea ecx, [ebp - 0x30]
call fcn.00438e80
mov edx, dword [ebp - 0x2d04]
push eax
push edx
lea ecx, [ebp - 0x2958]
call fcn.004340c0
lea ecx, [ebp - 0x2834]
inc edi
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp edi, eax
jb 0x40ca50
mov esi, 7
xor edi, edi
lea ecx, [ebp - 0x2958]
call fcn.0043def9
cmp eax, 2
je 0x40d0c7
lea ecx, [ebp - 0x2958]
call fcn.00433890
mov edi, 8
movzx ebx, ax
cmp dword [ebp - 0x26c0], edi
jb 0x40cbfe
mov eax, dword [ebp - 0x26d4]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov esi, 7
mov dword [ebp - 0x26c0], esi
mov dword [ebp - 0x26c4], 0
mov word [ebp - 0x26d4], cx
cmp dword [ebp - 0x26dc], edi
jb 0x40cc33
mov edx, dword [ebp - 0x26f0]
push edx
call fcn.0043c798
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x2958]
mov dword [ebp - 0x26dc], esi
mov dword [ebp - 0x26e0], 0
mov word [ebp - 0x26f0], ax
mov byte [ebp - 4], 0xb
call fcn.0040b530
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xa
call fcn.0043a1b0
test bx, bx
je 0x40cd7e
lea ecx, [ebp - 0x2834]
xor esi, esi
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x40cd7e
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
jmp 0x40cc90
push esi
lea ecx, [ebp - 0x2834]
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
test eax, eax
je 0x40cccf
movzx ecx, bx
push ecx
lea edx, [ebp - 0x3c]
push str._04x
push edx
call edi
add esp, 0xc
lea eax, [ebp - 0x3c]
push eax
push esi
lea ecx, [ebp - 0x2834]
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
call fcn.00531ea5
add esp, 8
test eax, eax
je 0x40cce4
lea ecx, [ebp - 0x2834]
inc esi
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp esi, eax
jb 0x40cc90
jmp 0x40cd7e
push str.Kernel32.DLL
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x2c
push esi
lea ecx, [ebp - 0x2834]
mov edi, eax
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
mov esi, dword [ebp - 0x2d00]
push eax
mov ecx, esi
call fcn.0043a510
lea ecx, [ebp - 0x3c]
push ecx
mov ecx, esi
call fcn.0043a6e0
push 0x20
mov ecx, esi
call fcn.00439de0
test edi, edi
je 0x40cd7e
push str.SetThreadLocale
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x40cd7e
mov edx, ebx
and edx, 0xfc00
xor eax, eax
cmp ax, dx
jne 0x40cd68
and ebx, 0x3ff
or ebx, 0x400
movzx esi, bx
push esi
push str.CInitInfoStorage::Init_nTempLangID__0x_1_lx__n
push 5
call fcn.00411380
add esp, 0xc
push esi
jmp 0x40cd6c
movzx ecx, bx
push ecx
call edi
push eax
push str.CInitInfoStorage::Init_SetThreadLocale_ret_1_d__n
push 5
call fcn.00411380
add esp, 0xc
mov edi, dword [ebp - 0x2d00]
mov ecx, edi
call fcn.00438c50
cmp eax, 4
jne 0x40cf54
mov eax, 7
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x26dc], eax
mov dword [ebp - 0x26e0], ecx
mov word [ebp - 0x26f0], dx
mov dword [ebp - 0x26c0], eax
xor eax, eax
mov dword [ebp - 0x26c4], ecx
mov word [ebp - 0x26d4], ax
mov ebx, dword [ebp - 0x2d08]
push 0xffffffffffffffff
push ecx
lea eax, [ebx + 0x74]
push eax
lea ecx, [ebp - 0x26f0]
mov byte [ebp - 4], 0x10
call fcn.004025d0
push 1
mov ecx, edi
call fcn.00438e80
mov ecx, eax
lea edx, [ecx + 2]
nop
mov si, word [ecx]
add ecx, 2
test si, si
jne 0x40cdf0
sub ecx, edx
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x26f0]
call fcn.00405db0
push 0xffffffffffffffff
push 0
lea eax, [ebx + 0x74]
push eax
lea ecx, [ebp - 0x26d4]
call fcn.004025d0
push 2
mov ecx, edi
call fcn.00438e80
mov ecx, eax
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40ce30
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x26d4]
call fcn.00405db0
mov eax, 0x104
cmp dword [ebp - 0x26e0], eax
ja 0x40d32e
cmp dword [ebp - 0x26c4], eax
ja 0x40d32e
cmp dword [ebp - 0x26dc], 8
mov eax, dword [ebp - 0x26f0]
jae 0x40ce7e
lea eax, [ebp - 0x26f0]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push eax
call esi
cmp eax, 0xffffffff
je 0x40cead
cmp dword [ebp - 0x26c0], 8
mov eax, dword [ebp - 0x26d4]
jae 0x40cea1
lea eax, [ebp - 0x26d4]
push eax
call esi
cmp eax, 0xffffffff
jne 0x40d15d
cmp dword [ebp - 0x26dc], 8
mov eax, dword [ebp - 0x26f0]
jae 0x40cec2
lea eax, [ebp - 0x26f0]
push eax
call esi
cmp eax, 0xffffffff
je 0x40ceeb
cmp dword [ebp - 0x26c0], 8
mov eax, dword [ebp - 0x26d4]
jae 0x40cedf
lea eax, [ebp - 0x26d4]
push eax
call esi
cmp eax, 0xffffffff
je 0x40d2ad
cmp dword [ebp - 0x26dc], 8
mov eax, dword [ebp - 0x26f0]
jae 0x40cf00
lea eax, [ebp - 0x26f0]
push eax
call esi
cmp eax, 0xffffffff
jne 0x40cf29
cmp dword [ebp - 0x26c0], 8
mov eax, dword [ebp - 0x26d4]
jae 0x40cf1d
lea eax, [ebp - 0x26d4]
push eax
call esi
cmp eax, 0xffffffff
jne 0x40d2d6
push str.CInitInfoStorage::Init_Resource_DLL_or_StringTable_ini_file_is_not_found._n
push 2
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x26d4]
call fcn.004021b0
lea ecx, [ebp - 0x26f0]
mov byte [ebp - 4], 0xa
call fcn.004021b0
jmp 0x40cf63
mov ecx, edi
call fcn.00438c50
test eax, eax
jne 0x40d425
mov eax, dword [ebp - 0x2cfc]
inc eax
add edi, 0x18
mov dword [ebp - 0x2cfc], eax
mov dword [ebp - 0x2d00], edi
cmp eax, 3
jb 0x40c980
lea ecx, [ebp - 0x2834]
call sym.Setup.exe_public:_void___thiscall_CDeviceInfSection::Clear_void_
push fcn.0043a1b0
push 3
push 0x18
lea ecx, [ebp - 0x2770]
push ecx
mov byte [ebp - 4], 9
call fcn.00531aa3
mov ebx, dword [ebp - 0x2d08]
mov edi, dword [ebp - 0x2cf8]
call fcn.00445a97
mov esi, dword [eax + 0xc]
call fcn.00445a97
mov eax, dword [eax + 4]
cmp esi, dword [eax + 0x44]
jne 0x40d446
push 3
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 8
jmp 0x40f7b1
push str.CInitInfoStorage::Init_resources_path_is_too_long_1_._n
push 2
call fcn.00411380
push 0xaa
mov edi, 4
lea ecx, [ebx + 0x3c]
push edi
push ecx
call fcn.00406250
mov esi, dword [0x5c1220]
add esp, 0x14
lea edx, [ebp - 0x2cfc]
push edx
lea eax, [ebp - 0x2d0c]
push eax
lea ecx, [esi + 4]
mov dword [ebp - 0x2cfc], edi
call fcn.00405af0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40d02f
mov esi, dword [eax + 0x10]
jmp 0x40d031
xor esi, esi
push esi
call fcn.00447046
test eax, eax
je 0x40d045
push esi
push eax
lea ecx, [ebx + 0x38]
call fcn.00404cb0
mov esi, dword [0x5c1220]
lea ecx, [ebp - 0x2cfc]
push ecx
lea edx, [ebp - 0x2d0c]
push edx
lea ecx, [esi + 4]
mov dword [ebp - 0x2cfc], edi
call fcn.00405af0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40d073
mov eax, dword [eax + 0x14]
jmp 0x40d075
xor eax, eax
lea ecx, [ebp - 0x26d4]
mov dword [ebx + 0x40], eax
call fcn.004021b0
lea ecx, [ebp - 0x26f0]
call fcn.004021b0
lea ecx, [ebp - 0x2958]
mov byte [ebp - 4], 0xb
call fcn.0040b530
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xa
call fcn.0043a1b0
push fcn.0043a1b0
push 3
push 0x18
lea eax, [ebp - 0x2770]
push eax
mov byte [ebp - 4], 9
call fcn.00531aa3
jmp 0x40f7b1
mov ebx, 8
cmp dword [ebp - 0x26c0], ebx
jb 0x40d0e3
mov ecx, dword [ebp - 0x26d4]
push ecx
call fcn.0043c798
add esp, 4
xor edx, edx
mov dword [ebp - 0x26c0], esi
mov dword [ebp - 0x26c4], edi
mov word [ebp - 0x26d4], dx
cmp dword [ebp - 0x26dc], ebx
jb 0x40d10f
mov eax, dword [ebp - 0x26f0]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov word [ebp - 0x26f0], cx
lea ecx, [ebp - 0x2958]
mov dword [ebp - 0x26dc], esi
mov dword [ebp - 0x26e0], edi
mov byte [ebp - 4], 0xb
call fcn.0040b530
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xa
call fcn.0043a1b0
push fcn.0043a1b0
push 3
push 0x18
lea edx, [ebp - 0x2770]
push edx
mov byte [ebp - 4], 9
call fcn.00531aa3
jmp 0x40f7b1
mov eax, dword [ebp - 0x26f0]
mov esi, 8
mov dword [ebp - 0x14], 0
cmp dword [ebp - 0x26dc], esi
jae 0x40d17d
lea eax, [ebp - 0x26f0]
push eax
lea ecx, [ebx + 8]
call fcn.0043a890
mov eax, dword [ebp - 0x26d4]
cmp dword [ebp - 0x26c0], esi
jae 0x40d19a
lea eax, [ebp - 0x26d4]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
jne 0x40d1d0
push 3
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 8
lea ecx, [ebp - 0x26d4]
call fcn.004021b0
lea ecx, [ebp - 0x26f0]
call fcn.004021b0
jmp 0x40d0a9
call fcn.00445a97
mov dword [eax + 0xc], esi
mov eax, dword [ebp - 0x2cfc]
push 0x10
lea esi, [eax + eax*2]
lea ecx, [ebp - 0x14]
push ecx
lea esi, [ebp + esi*8 - 0x2770]
push 3
mov ecx, esi
call fcn.00438e80
push eax
call fcn.005324df
movzx eax, ax
movzx edx, ax
push edx
mov dword [ebp + 0xc], eax
lea eax, [ebp - 0x3c]
push str._04x
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
lea ecx, [ebp - 0x3c]
push ecx
push str.__SELECTEDLANGID__
lea ecx, [ebx + 8]
call fcn.0043a370
push 0
mov ecx, esi
call fcn.00438e80
push eax
push 0x561b24
lea ecx, [ebx + 8]
call fcn.0043a370
push 0
mov ecx, esi
call fcn.00438e80
push eax
lea ecx, [ebp - 0x2d00]
call fcn.00407f60
push 0x561b20
push 0x561b1c
lea ecx, [ebp - 0x2d00]
mov byte [ebp - 4], 0x11
call fcn.00405750
mov edx, dword [ebp - 0x2d00]
push edx
push str.__SELECTEDLANGDIR__
lea ecx, [ebx + 8]
call fcn.0043a370
lea ecx, [ebp - 0x2d00]
call fcn.00401450
lea ecx, [ebp - 0x26d4]
call fcn.004021b0
lea ecx, [ebp - 0x26f0]
mov byte [ebp - 4], 0xa
call fcn.004021b0
jmp 0x40cf82
cmp dword [ebp - 0x26c0], 8
mov eax, dword [ebp - 0x26d4]
jae 0x40d2c2
lea eax, [ebp - 0x26d4]
push eax
push 1
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0xc
jmp 0x40d1b5
cmp dword [ebp - 0x26dc], 8
mov eax, dword [ebp - 0x26f0]
jae 0x40d2eb
lea eax, [ebp - 0x26f0]
push eax
push 1
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0xc
lea ecx, [ebp - 0x26d4]
call fcn.004021b0
lea ecx, [ebp - 0x26f0]
call fcn.004021b0
push fcn.0043a1b0
push 3
push 0x18
lea ecx, [ebp - 0x2770]
push ecx
mov byte [ebp - 4], 9
call fcn.00531aa3
jmp 0x40f7b1
push str.CInitInfoStorage::Init_resources_path_is_too_long_1_._n
push 2
call fcn.00411380
push 0xaa
mov edi, 4
lea edx, [ebx + 0x3c]
push edi
push edx
call fcn.00406250
mov esi, dword [0x5c1220]
add esp, 0x14
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x2d0c]
push ecx
lea ecx, [esi + 4]
mov dword [ebp - 0x14], edi
call fcn.00405af0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40d379
mov esi, dword [eax + 0x10]
jmp 0x40d37b
xor esi, esi
push esi
call fcn.00447046
test eax, eax
je 0x40d38f
push esi
push eax
lea ecx, [ebx + 0x38]
call fcn.00404cb0
mov esi, dword [0x5c1220]
lea edx, [ebp - 0x14]
push edx
lea eax, [ebp - 0x2d0c]
push eax
lea ecx, [esi + 4]
mov dword [ebp - 0x14], edi
call fcn.00405af0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40d3b7
mov eax, dword [eax + 0x14]
jmp 0x40d3b9
xor eax, eax
mov esi, 8
mov dword [ebx + 0x40], eax
cmp dword [ebp - 0x26c0], esi
jb 0x40d3d8
mov ecx, dword [ebp - 0x26d4]
push ecx
call fcn.0043c798
add esp, 4
xor ebx, ebx
xor edx, edx
mov edi, 7
mov dword [ebp - 0x26c0], edi
mov dword [ebp - 0x26c4], ebx
mov word [ebp - 0x26d4], dx
cmp dword [ebp - 0x26dc], esi
jb 0x40d40b
mov eax, dword [ebp - 0x26f0]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x26dc], edi
mov dword [ebp - 0x26e0], ebx
mov word [ebp - 0x26f0], cx
jmp 0x40d13f
mov edx, dword [ebp - 0x2d08]
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x7c]
push ecx
add edx, 0x38
push 2
push edx
call 0x4084a0
add esp, 0x10
jmp 0x40d0a9
mov dx, word [ebp + 0xc]
push 0x20a
lea eax, [ebp - 0x4a8]
push 0
push eax
mov word [ebx + 0x214], dx
call fcn.00531b10
add esp, 0xc
push 0x105
lea ecx, [ebp - 0x4a8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
cmp word [ebp - 0x4a8], 0
je 0x40d497
lea edx, [ebp - 0x4a8]
push edx
push str.__FLD_WINDOWS__
lea ecx, [ebx + 8]
call fcn.0043a370
push 0x20a
lea eax, [ebp - 0x4a8]
push 0
push eax
call fcn.00531b10
add esp, 0xc
push 0x105
lea ecx, [ebp - 0x4a8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
cmp word [ebp - 0x4a8], 0
je 0x40d4dd
lea edx, [ebp - 0x4a8]
push edx
push str.__FLD_SYSTEM__
lea ecx, [ebx + 8]
call fcn.0043a370
push 0x20a
lea eax, [ebp - 0x4a8]
push 0
push eax
call fcn.00531b10
add esp, 0xc
lea ecx, [ebp - 0x2750]
call fcn.00431540
push 0x561a30
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x2750]
mov byte [ebp - 4], 0x12
call fcn.004310d0
test eax, eax
je 0x40d543
push str.Common_AppData
lea ecx, [ebp - 0x2750]
call fcn.004312a0
test eax, eax
je 0x40d543
cmp word [eax], 0
je 0x40d543
push eax
push str.__FLD_COMMON_APPDATA__
lea ecx, [ebx + 8]
call fcn.0043a370
lea ecx, [ebp - 0x2750]
mov byte [ebp - 4], 9
call fcn.00431570
push edi
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push 0x5619c8
lea edx, [ebp - 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
lea ecx, [ebx + 8]
push eax
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40d585
sub eax, edx
sar eax, 1
jne 0x40d5b2
push 0x5619c8
lea ecx, [ebp - 0x48]
push ecx
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x10
jmp 0x40f7b1
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40d5c6
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebx + 0x58]
call fcn.004026d0
push edi
push 0x104
lea eax, [ebp - 0x24ac]
push eax
push 0x55a24c
push str.RegionDefault
lea ecx, [ebp - 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [ebp - 0x24ac]
push 0x25
push edx
call fcn.00530319
add esp, 8
test eax, eax
je 0x40d63c
push 0xa
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 8]
mov dword [ebp - 0x14], 0
call fcn.00439600
push eax
call fcn.005324c5
add esp, 0xc
jmp 0x40d64e
push edi
push 0
push str.RegionDefault
lea edx, [ebp - 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push edi
push 0x104
mov dword [ebx + 0x50], eax
lea eax, [ebp - 0x24ac]
push eax
push 0x55a24c
push str.License
lea ecx, [ebp - 0x48]
push ecx
call esi
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40d686
sub eax, edx
sar eax, 1
je 0x40d792
push 0xffffffffffffffff
push 0
lea eax, [ebx + 0x74]
push eax
lea ecx, [ebp - 0x270c]
call fcn.004025d0
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x270c]
call fcn.004066e0
lea ecx, [ebp - 0x2c]
call fcn.004484e4
mov eax, dword [ebp - 0x270c]
mov esi, 8
mov byte [ebp - 4], 0x13
cmp dword [ebp - 0x26f8], esi
jae 0x40d6ee
lea eax, [ebp - 0x270c]
push 0
push 0
push eax
lea ecx, [ebp - 0x2c]
call fcn.004489fb
test eax, eax
je 0x40d7df
lea ecx, [ebp - 0x2c]
call fcn.004483d0
mov esi, eax
push 0x341
lea ecx, [esi + 1]
push str.CommonFunctions.cpp
push ecx
call fcn.0042d8c0
add esp, 0xc
mov dword [ebx + 0x54], eax
test eax, eax
jne 0x40d76e
cmp dword [ebp - 0x26f8], 8
mov eax, dword [ebp - 0x270c]
jae 0x40d73f
lea eax, [ebp - 0x270c]
push eax
push 0x271b
add ebx, 0x38
push ebx
call 0x4084a0
push str.CInitInfoStorage::Init_Cannot_allocate_memory_for_License_Text._n
push 2
call fcn.00411380
add esp, 0x14
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 9
call fcn.00448652
jmp 0x40f7b1
push esi
push eax
lea ecx, [ebp - 0x2c]
call fcn.004481d9
lea ecx, [ebp - 0x2c]
call fcn.0044847f
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 9
call fcn.00448652
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push edi
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.SetupCmdLine
lea eax, [ebp - 0x48]
push eax
call esi
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
jmp 0x40d7c0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40d7c0
sub eax, edx
sar eax, 1
jne 0x40d85b
push str.SetupCmdLine
jmp 0x40d59b
mov eax, dword [ebp - 0x270c]
cmp dword [ebp - 0x26f8], esi
jae 0x40d7f3
lea eax, [ebp - 0x270c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
mov eax, dword [ebp - 0x270c]
jne 0x40d81b
cmp dword [ebp - 0x26f8], esi
jae 0x40d813
lea eax, [ebp - 0x270c]
push eax
push 0x271a
jmp 0x40d82f
cmp dword [ebp - 0x26f8], esi
jae 0x40d829
lea eax, [ebp - 0x270c]
push eax
push 0x271b
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0xc
push str.CInitInfoStorage::Init_Cannot_open_the_license_text._n
push 2
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 9
call fcn.00448652
jmp 0x40f7b1
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 0xe4]
call fcn.004066b0
push edi
push 0x104
lea eax, [ebp - 0x24ac]
push eax
push 0x55a24c
push str.ReadmeCmdLine
lea ecx, [ebp - 0x48]
push ecx
call esi
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40d893
sub eax, edx
sar eax, 1
jne 0x40d8c0
push str.ReadmeCmdLine
lea edx, [ebp - 0x48]
push edx
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x10
jmp 0x40f7b1
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 0x100]
call fcn.004066b0
push edi
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push str.DefaultTargetDir
lea edx, [ebp - 0x48]
push edx
call esi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40d901
sub eax, edx
sar eax, 1
jne 0x40d91c
push str.DefaultTargetDir
jmp 0x40d59b
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
lea esi, [ebx + 0xac]
call fcn.00439600
push eax
mov ecx, esi
call fcn.004066b0
mov eax, dword [ebx + 0xbc]
test eax, eax
je 0x40db19
cmp dword [ebp - 0x2c80], 0
je 0x40da5f
lea eax, [ebp - 0x2d00]
push eax
mov dword [ebp - 0x2d00], 0
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x40db19
lea ecx, [ebp - 0x2cfc]
push ecx
push 0x26
push eax
mov dword [ebp - 0x2cfc], eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x40da4c
push 0x20a
push eax
lea edx, [ebp - 0x4a8]
push edx
call fcn.00531b10
mov ecx, dword [ebp - 0x2cfc]
add esp, 0xc
lea eax, [ebp - 0x4a8]
push eax
push ecx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
jne 0x40d9da
push str.DefaultTargetDir
lea edx, [ebp - 0x48]
push edx
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x10
jmp 0x40f7b1
push str.Canon
lea eax, [ebp - 0x4a8]
push 0x105
push eax
call fcn.00531b8a
add esp, 0xc
lea ecx, [ebp - 0x4a8]
push ecx
lea ecx, [ebx + 0x90]
call fcn.004066b0
push esi
lea edx, [ebp - 0x4a8]
push edx
lea eax, [ebp - 0x2744]
push eax
call fcn.004078e0
add esp, 0xc
push eax
mov ecx, esi
mov byte [ebp - 4], 0x14
call fcn.00406710
lea ecx, [ebp - 0x2744]
mov byte [ebp - 4], 9
call fcn.004021b0
mov eax, dword [ebp - 0x2d00]
mov edx, dword [ebp - 0x2cfc]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov eax, dword [ebp - 0x2d00]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x40db19
push str.___FLD_SYSTEM___
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x26d4]
call fcn.00402990
xor eax, eax
cmp dword [esi + 0x14], 8
mov byte [ebp - 4], 0x15
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
jb 0x40da8e
mov eax, dword [esi]
jmp 0x40da90
mov eax, esi
push 0
push 0
push 0
push 0
push 0
push 0
push 4
lea ecx, [ebp - 0x18]
push ecx
push eax
call fcn.00530997
add esp, 0x24
cmp word [ebp - 0x18], 0
jne 0x40db0a
cmp dword [ebp - 0x26c0], 8
mov eax, dword [ebp - 0x26d4]
jae 0x40dac7
lea eax, [ebp - 0x26d4]
push 0
push 0
push 0
push 0
push 0
push 0
push 4
lea edx, [ebp - 0x18]
push edx
push eax
call fcn.00530997
push esi
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x2744]
push ecx
call fcn.004078e0
add esp, 0x30
push eax
mov ecx, esi
mov byte [ebp - 4], 0x16
call fcn.00406710
lea ecx, [ebp - 0x2744]
call fcn.004021b0
lea ecx, [ebp - 0x26d4]
mov byte [ebp - 4], 9
call fcn.004021b0
mov esi, dword [ebp - 0x2cf8]
push esi
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.CommandLine
lea eax, [ebp - 0x60]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x27d0]
call fcn.004066b0
push 0x5617fc
lea ecx, [ebp - 0x26d4]
call fcn.00402990
lea edx, [ebp - 0x26d4]
push edx
lea ecx, [ebp - 0x2d1c]
mov byte [ebp - 4], 0x17
call fcn.0040a1d0
lea ecx, [ebp - 0x26d4]
mov byte [ebp - 4], 9
call fcn.004021b0
mov eax, dword [ebx + 0x12c]
mov edx, dword [ebx + 0x128]
lea ecx, [ebx + 0x128]
push eax
push edx
lea eax, [ebp - 0x14]
push eax
call fcn.0040b920
push esi
push 0x1000
lea ecx, [ebp - 0x24ac]
push ecx
lea edx, [ebp - 0x1cc]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dbd0
sub eax, edx
sar eax, 1
je 0x40e347
lea ecx, [ebp - 0x26d0]
call fcn.0043a090
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 0x18
call fcn.0043a7a0
lea ecx, [ebp - 0x26d0]
mov dword [ebp - 0x2d04], 0
call fcn.00438c50
test eax, eax
je 0x40e338
mov esi, dword [ebp - 0x2d04]
lea esp, [esp]
push esi
lea ecx, [ebp - 0x26d0]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov edi, eax
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dc50
sub eax, edx
sar eax, 1
je 0x40e31e
lea ecx, [ebp - 0x2944]
call 0x40a730
push edi
lea ecx, [ebp - 0x2928]
mov byte [ebp - 4], 0x19
call fcn.004066b0
mov ecx, dword [ebp - 0x2cf8]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.Version
push edi
call esi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
jmp 0x40dcc0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dcc0
sub eax, edx
sar eax, 1
je 0x40dcec
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2944]
call fcn.004066b0
mov edx, dword [ebp - 0x2cf8]
push edx
push 0x104
lea eax, [ebp - 0x24ac]
push eax
push 0x55a24c
push str.DefaultDeviceDir
push edi
call esi
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dd20
sub eax, edx
sar eax, 1
je 0x40e391
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x290c]
call fcn.004066b0
mov eax, dword [ebp - 0x2cf8]
push eax
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push str.ProgramShortcutDir
push edi
call esi
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dd82
sub eax, edx
sar eax, 1
je 0x40ddae
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x28f0]
call fcn.004066b0
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.Diskspace
push edi
call esi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dde0
sub eax, edx
sar eax, 1
je 0x40de1c
push 0xa
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
mov dword [ebp - 0x14], 0
call fcn.00439600
push eax
call fcn.005324c5
add esp, 0xc
mov dword [ebp - 0x28d4], eax
push 0x2002
lea eax, [ebp - 0x24ac]
push 0
push eax
call fcn.00531b10
mov ecx, dword [ebp - 0x2cf8]
add esp, 0xc
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.PrinterHWID
push edi
call esi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40de64
sub eax, edx
sar eax, 1
je 0x40de90
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x28d0]
call fcn.004066b0
push 0x2002
lea edx, [ebp - 0x24ac]
push 0
push edx
call fcn.00531b10
mov eax, dword [ebp - 0x2cf8]
add esp, 0xc
push eax
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push str.ScannerHWID
push edi
call esi
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
jmp 0x40dee0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dee0
sub eax, edx
sar eax, 1
je 0x40df0c
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x28b4]
call fcn.004066b0
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.UninstallerName
push edi
call esi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2898]
call fcn.004066b0
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.UninstallerGUID
push edi
call esi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40df80
sub eax, edx
sar eax, 1
je 0x40e3c4
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x287c]
call fcn.004066b0
cmp dword [ebp - 0x2930], 8
mov esi, dword [ebp - 0x2944]
jae 0x40dfc5
lea esi, [ebp - 0x2944]
mov edx, dword [ebp - 0x2928]
mov eax, 8
cmp dword [ebp - 0x2914], eax
jae 0x40dfde
lea edx, [ebp - 0x2928]
mov ecx, dword [ebp - 0x287c]
cmp dword [ebp - 0x2868], eax
jae 0x40dff2
lea ecx, [ebp - 0x287c]
cmp dword [ebp - 0x27bc], eax
mov eax, dword [ebp - 0x27d0]
jae 0x40e006
lea eax, [ebp - 0x27d0]
push esi
push edx
push ecx
push eax
lea edx, [ebp - 0x4a8]
push 0x104
push edx
call fcn.005322c4
add esp, 0x18
lea eax, [ebp - 0x4a8]
push eax
lea ecx, [ebp - 0x2860]
call fcn.004066b0
push 0
lea ecx, [ebp - 0x28]
push str.DRIVER_d
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
mov edx, dword [ebp - 0x2cf8]
add esp, 0xc
push edx
push 0x104
lea eax, [ebp - 0x24ac]
push eax
push 0x55a24c
lea ecx, [ebp - 0x28]
push ecx
push edi
mov dword [ebp - 0x2cfc], 1
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
je 0x40e2bf
lea esp, [esp]
lea ecx, [ebp - 0x26ec]
call fcn.0043a1a0
push 0x2c
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x1a
call fcn.0043a510
push 0x20
lea ecx, [ebp - 0x26ec]
call fcn.00439de0
lea ecx, [ebp - 0x26ec]
call fcn.00438c50
cmp eax, 4
jb 0x40e265
push 0
lea ecx, [ebp - 0x26ec]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov esi, eax
push esi
lea ecx, [ebp - 0x2744]
call fcn.00402990
lea eax, [ebp - 0x2744]
push eax
lea ecx, [ebp - 0x2d1c]
mov byte [ebp - 4], 0x1b
call fcn.0040a1d0
lea ecx, [ebp - 0x2744]
mov byte [ebp - 4], 0x1a
call fcn.004021b0
cmp dword [ebp - 0x2cb0], 0
jne 0x40e12a
cmp dword [ebp - 0x2ca8], 0
je 0x40e174
xor ecx, ecx
cmp cx, word [ebp - 0x2c48]
jne 0x40e174
mov ecx, 0x561700
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40e157
test dx, dx
je 0x40e153
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40e157
add eax, 4
add ecx, 4
test dx, dx
jne 0x40e131
xor eax, eax
jmp 0x40e15c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40e174
push str.CInitInfoStorage::GetModelsInfo_XPS_UnSupported.._n
push 2
call fcn.00411380
add esp, 8
jmp 0x40e265
cmp dword [ebp - 0x2c60], 0
jne 0x40e1c7
mov ecx, 0x56168c
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40e1aa
test dx, dx
je 0x40e1a6
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40e1aa
add eax, 4
add ecx, 4
test dx, dx
jne 0x40e184
xor eax, eax
jmp 0x40e1af
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40e1c7
push str.CInitInfoStorage::GetModelsInfo_V4_UnSupported.._n
push 2
call fcn.00411380
add esp, 8
jmp 0x40e265
lea ecx, [ebp - 0x2798]
call fcn.00404e50
push esi
lea ecx, [ebp - 0x2798]
mov byte [ebp - 4], 0x1c
call fcn.004066b0
push 1
lea ecx, [ebp - 0x26ec]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x277c]
call fcn.004066b0
push 2
lea ecx, [ebp - 0x26ec]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2760]
call fcn.004066b0
push 3
lea ecx, [ebp - 0x26ec]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2744]
call fcn.004066b0
lea edx, [ebp - 0x2798]
push edx
lea ecx, [ebp - 0x2844]
call fcn.0040ae80
lea ecx, [ebp - 0x2798]
call fcn.00404e90
mov esi, dword [ebp - 0x2cfc]
push esi
lea eax, [ebp - 0x28]
push str.DRIVER_d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
inc esi
add esp, 0xc
lea ecx, [ebp - 0x26ec]
mov dword [ebp - 0x2cfc], esi
mov byte [ebp - 4], 0x19
call fcn.0043a1b0
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
lea eax, [ebp - 0x28]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
jne 0x40e080
mov ecx, dword [ebp - 0x2840]
sub ecx, dword [ebp - 0x2844]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
je 0x40e309
lea edx, [ebp - 0x2944]
push edx
lea ecx, [ebx + 0x128]
call fcn.0040c300
mov eax, dword [ebp - 0x2cfc]
push edi
push eax
push str.CInitInfoStorage::Init_m_ModelInfo__1_d__.DeviceName____2_s___n
push 5
call fcn.00411380
add esp, 0x10
lea ecx, [ebp - 0x2944]
mov byte [ebp - 4], 0x18
call fcn.0040a7e0
mov esi, dword [ebp - 0x2d04]
inc esi
lea ecx, [ebp - 0x26d0]
mov dword [ebp - 0x2d04], esi
call fcn.00438c50
cmp esi, eax
jb 0x40dc30
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 9
call fcn.0043a0f0
mov ecx, dword [ebx + 0x12c]
sub ecx, dword [ebx + 0x128]
mov eax, 0x78787879
imul ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x40e3cb
push str.CInitInfoStorage::Init___nCount__tcslen__0_TRUE__n
push 5
call fcn.00411380
push 0x55a24c
lea edx, [ebp - 0x1cc]
push edx
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x18
jmp 0x40f7b1
push str.DefaultDeviceDir
push edi
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x10
lea ecx, [ebp - 0x2944]
call fcn.0040a7e0
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 9
call fcn.0043a0f0
jmp 0x40f7b1
push str.UninstallerGUID
jmp 0x40e396
mov edi, dword [ebp - 0x2d0c]
test edi, edi
je 0x40e3fa
mov eax, edi
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40e3e0
sub eax, edx
sar eax, 1
je 0x40e3fa
lea esi, [ebx + 0x13c]
push edi
jmp 0x40e43a
mov eax, dword [ebp - 0x2cf8]
push eax
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push str.Code
lea edx, [ebp - 0x228]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
lea esi, [ebx + 0x13c]
call fcn.00439600
push eax
mov ecx, esi
call fcn.004066b0
cmp dword [esi + 0x14], 8
jb 0x40e449
mov esi, dword [esi]
push esi
push str.CInitInfoStorage::Init_m_strLanguageCode____1_s___n
push 5
call fcn.00411380
mov eax, dword [ebx + 0x15c]
mov ecx, dword [ebx + 0x158]
add esp, 0xc
push eax
push ecx
lea ecx, [ebp - 0x2d0c]
push ecx
lea ecx, [ebx + 0x158]
call fcn.00409960
mov edx, dword [ebp - 0x2cf8]
push edx
push 0x1000
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebp - 0x270]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40e4a2
sub eax, edx
sar eax, 1
je 0x40e634
lea ecx, [ebp - 0x26ec]
call fcn.0043a090
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x1d
call fcn.0043a7a0
lea ecx, [ebp - 0x26ec]
xor edi, edi
call fcn.00438c50
test eax, eax
je 0x40e625
lea ecx, [ecx]
lea ecx, [ebp - 0x26d0]
call fcn.0043a1a0
push 0x3d
push edi
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x1e
call fcn.00438e80
push eax
lea ecx, [ebp - 0x26d0]
call fcn.0043a510
push 0x20
lea ecx, [ebp - 0x26d0]
call fcn.00439de0
lea ecx, [ebp - 0x26d0]
call fcn.00438c50
cmp eax, 2
jb 0x40e602
lea ecx, [ebp - 0x2764]
call fcn.00404f20
push 0
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 0x1f
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2764]
call fcn.004066b0
push 1
lea ecx, [ebp - 0x26d0]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2748]
call fcn.004066b0
cmp dword [ebp - 0x2750], 8
mov eax, dword [ebp - 0x2764]
jae 0x40e5a2
lea eax, [ebp - 0x2764]
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0
push eax
lea edx, [ebp - 0xb0]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov dword [ebp - 0x272c], eax
lea eax, [ebp - 0x2764]
push eax
lea ecx, [ebx + 0x158]
call fcn.0040af10
cmp dword [ebp - 0x2734], 8
mov eax, dword [ebp - 0x2748]
jae 0x40e5e6
lea eax, [ebp - 0x2748]
push eax
push edi
push str.CInitInfoStorage::Init_m_InstallerName__1_d__.InstallerName____2_s___n
push 5
call fcn.00411380
add esp, 0x10
lea ecx, [ebp - 0x2764]
call fcn.00404f50
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 0x1d
call fcn.0043a1b0
lea ecx, [ebp - 0x26ec]
inc edi
call fcn.00438c50
cmp edi, eax
jb 0x40e4f0
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 9
call fcn.0043a0f0
mov ecx, dword [ebx + 0x15c]
sub ecx, dword [ebx + 0x158]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x40e680
push str.CInitInfoStorage::Init___nCount__tcslen__0_TRUE__n
push 5
call fcn.00411380
push 0x55a24c
lea edx, [ebp - 0x270]
push edx
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x18
jmp 0x40f7b1
mov eax, dword [ebx + 0x16c]
mov ecx, dword [ebx + 0x168]
push eax
push ecx
lea eax, [ebp - 0x2d0c]
push eax
lea ecx, [ebx + 0x168]
call 0x4099d0
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x1000
lea edx, [ebp - 0x24ac]
push edx
lea eax, [ebp - 0x29c]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40e6d0
sub eax, edx
sar eax, 1
je 0x40e832
lea ecx, [ebp - 0x26ec]
call fcn.0043a090
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x20
call fcn.0043a7a0
lea ecx, [ebp - 0x26ec]
xor edi, edi
call fcn.00438c50
test eax, eax
je 0x40e823
jmp 0x40e720
lea ecx, [ebp - 0x26d0]
call fcn.0043a1a0
push 0x3d
push edi
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x21
call fcn.00438e80
push eax
lea ecx, [ebp - 0x26d0]
call fcn.0043a510
push 0x20
lea ecx, [ebp - 0x26d0]
call fcn.00439de0
lea ecx, [ebp - 0x26d0]
call fcn.00438c50
cmp eax, 2
jb 0x40e800
lea ecx, [ebp - 0x2760]
call fcn.00404f20
push 0
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 0x22
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2760]
call fcn.004066b0
push 1
lea ecx, [ebp - 0x26d0]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
push eax
lea ecx, [ebp - 0x2744]
call fcn.004066b0
lea edx, [ebp - 0x2760]
push edx
lea ecx, [ebx + 0x168]
call fcn.0040afa0
cmp dword [ebp - 0x2730], 8
mov eax, dword [ebp - 0x2744]
jae 0x40e7e4
lea eax, [ebp - 0x2744]
push eax
push edi
push str.CInitInfoStorage::Init_m_UninstallerDir__1_d__.UninstallerPath____2_s___n
push 5
call fcn.00411380
add esp, 0x10
lea ecx, [ebp - 0x2760]
call fcn.00404f50
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 0x20
call fcn.0043a1b0
lea ecx, [ebp - 0x26ec]
inc edi
call fcn.00438c50
cmp edi, eax
jb 0x40e720
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 9
call fcn.0043a0f0
mov eax, dword [ebx + 0x17c]
mov ecx, dword [ebx + 0x178]
push eax
push ecx
lea eax, [ebp - 0x2d0c]
push eax
lea ecx, [ebx + 0x178]
call 0x409a40
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x1000
lea edx, [ebp - 0x24ac]
push edx
lea eax, [ebp - 0x9c]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
jmp 0x40e880
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40e880
sub eax, edx
sar eax, 1
je 0x40ebac
lea ecx, [ebp - 0x30]
call fcn.0043a090
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x23
call fcn.0043a7a0
xor esi, esi
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x2d04], esi
call fcn.00438c50
test eax, eax
je 0x40eba0
lea ecx, [ebp - 0x26ec]
call fcn.0043a1a0
push 0x3d
push esi
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x24
call fcn.00438e80
push eax
lea ecx, [ebp - 0x26ec]
call fcn.0043a510
push 0x20
lea ecx, [ebp - 0x26ec]
call fcn.00439de0
lea ecx, [ebp - 0x26ec]
call fcn.00438c50
cmp eax, 2
jb 0x40eb74
push 0
lea ecx, [ebp - 0x26ec]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, dword [ebp - 0x2d18]
sub ecx, dword [ebp - 0x2d1c]
mov dword [ebp - 0x2cfc], eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [ebp - 0x14], 0
je 0x40eb74
mov edi, dword [ebp - 0x2d1c]
lea ecx, [ecx]
cmp dword [edi + 0x14], 8
jb 0x40e96a
mov ecx, dword [edi]
jmp 0x40e96c
mov ecx, edi
mov eax, dword [ebp - 0x2cfc]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40e998
test dx, dx
je 0x40e994
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40e998
add eax, 4
add ecx, 4
test dx, dx
jne 0x40e972
xor eax, eax
jmp 0x40e99d
sbb eax, eax
sbb eax, 0xffffffff
xor ecx, ecx
cmp eax, ecx
je 0x40e9b6
mov eax, dword [ebp - 0x14]
inc eax
add edi, 0x1c
mov dword [ebp - 0x14], eax
cmp eax, esi
jb 0x40e960
jmp 0x40eb74
mov eax, 7
xor edx, edx
mov dword [ebp - 0x2784], eax
mov dword [ebp - 0x2768], eax
mov dword [ebp - 0x274c], eax
mov dword [ebp - 0x2730], eax
xor eax, eax
mov dword [ebp - 0x2788], ecx
mov word [ebp - 0x2798], dx
mov dword [ebp - 0x276c], ecx
mov word [ebp - 0x277c], dx
mov dword [ebp - 0x2750], ecx
mov word [ebp - 0x2760], dx
mov dword [ebp - 0x2734], ecx
mov word [ebp - 0x2744], ax
mov eax, dword [ebp - 0x2cfc]
mov byte [ebp - 4], 0x25
lea edx, [eax + 2]
jmp 0x40ea20
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ea20
mov ecx, dword [ebp - 0x2cfc]
sub eax, edx
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x2798]
call fcn.004026d0
lea ecx, [ebp - 0x26d0]
call fcn.0043a1a0
push 0x2c
push 1
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x26
call fcn.00438e80
push eax
lea ecx, [ebp - 0x26d0]
call fcn.0043a510
push 0x20
lea ecx, [ebp - 0x26d0]
call fcn.00439de0
lea ecx, [ebp - 0x26d0]
call fcn.00438c50
cmp eax, 2
jb 0x40eb5a
push 0
lea ecx, [ebp - 0x26d0]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x40eab0
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40eab0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x277c]
call fcn.004026d0
push 0
push 0x55a24c
lea ecx, [ebp - 0x2760]
call fcn.004026d0
push 1
lea ecx, [ebp - 0x26d0]
call fcn.00438e80
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
lea esp, [esp]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40eb00
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2744]
call fcn.004026d0
lea edx, [ebp - 0x2798]
push edx
lea ecx, [ebx + 0x178]
call fcn.0040ae80
cmp dword [ebp - 0x2730], 8
mov eax, dword [ebp - 0x2744]
jae 0x40eb43
lea eax, [ebp - 0x2744]
push eax
mov eax, dword [ebp - 0x2d04]
push eax
push str.CInitInfoStorage::Init_m_ReadmeInfo__1_d__.ListItemName____2_s___n
push 5
call fcn.00411380
add esp, 0x10
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 0x25
call fcn.0043a1b0
lea ecx, [ebp - 0x2798]
call fcn.00404e90
lea ecx, [ebp - 0x26ec]
mov byte [ebp - 4], 0x23
call fcn.0043a1b0
mov esi, dword [ebp - 0x2d04]
inc esi
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x2d04], esi
call fcn.00438c50
cmp esi, eax
jb 0x40e8c8
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 9
call fcn.0043a0f0
mov ecx, dword [ebx + 0x17c]
sub ecx, dword [ebx + 0x178]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x40ebf8
push str.CInitInfoStorage::Init___nCount__tcslen__0_TRUE__n
push 5
call fcn.00411380
push 0x55a24c
lea edx, [ebp - 0x9c]
push edx
push 2
add ebx, 0x38
push ebx
call 0x4084a0
add esp, 0x18
jmp 0x40f7b1
mov eax, dword [ebp - 0x2cf8]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push eax
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push str.ExePath
lea edx, [ebp - 0x1e8]
push edx
call edi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x40ec40
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40ec40
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebx + 0x188]
call fcn.004026d0
mov ecx, dword [ebp - 0x2cf8]
push ecx
push 0x104
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.CmdLine
lea eax, [ebp - 0x1e8]
push eax
call edi
lea eax, [ebp - 0x24ac]
lea ecx, [eax + 2]
jmp 0x40ec90
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x40ec90
sub eax, ecx
sar eax, 1
push eax
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [ebx + 0x1a4]
call fcn.004026d0
mov edx, dword [ebp - 0x2cf8]
push edx
push 0x104
lea eax, [ebp - 0x24ac]
push eax
push 0x55a24c
push str.Version
lea ecx, [ebp - 0x60]
push ecx
call edi
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
lea esp, [esp]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40ecf0
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [ebx + 0x1c0]
push eax
mov ecx, esi
call fcn.004026d0
cmp dword [esi + 0x14], 8
jb 0x40ed16
mov esi, dword [esi]
push esi
push str.CInitInfoStorage::Init_m_strUninstallerVersion____1_s___n
push 5
call fcn.00411380
mov eax, dword [ebp - 0x2cf8]
add esp, 0xc
push eax
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push str.TargetDir
lea edx, [ebp - 0x60]
push edx
call edi
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [ebx + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40ed60
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [ebx + 0x1f8]
push eax
mov ecx, esi
call fcn.004026d0
cmp dword [esi + 0x14], 8
jb 0x40ed86
mov esi, dword [esi]
push esi
push str.CInitInfoStorage::Init_m_strDirUninstaller____1_s___n
push 5
call fcn.00411380
push 0x5611f8
lea ecx, [ebp - 0xf0]
push 0x20
push ecx
call fcn.00531d3f
add esp, 0x18
cmp dword [ebp - 0x2cb4], 0
jne 0x40ef51
cmp dword [ebp - 0x2c7c], 0
jne 0x40ef51
cmp dword [ebp - 0x2c94], 0
jne 0x40ef51
cmp dword [ebp - 0x2c6c], 0
jne 0x40ef51
cmp dword [ebp - 0x2cb0], 0
jne 0x40ee83
cmp dword [ebp - 0x2c80], 0
jne 0x40ee83
cmp dword [ebp - 0x2c84], 0
je 0x40ef91
push str.CInitInfoStorage::Init___WINNT.bUpperWin2003Server_n
push 5
call fcn.00411380
add esp, 8
cmp dword [ebp - 0x2c38], 0
lea edx, [ebp - 0x1b0]
je 0x40ee4c
push str.WIN2K3_IA64
push 0x20
push edx
call fcn.00531d3f
push str.WINNT5_IA64
lea eax, [ebp - 0x170]
push 0x20
push eax
call fcn.00531d3f
push str.IA64
jmp 0x40ef80
cmp dword [ebp - 0x2c3c], 0
je 0x40ef5b
push str.WIN2K3_x64
push 0x20
push edx
call fcn.00531d3f
push str.WINNT5_x64
lea eax, [ebp - 0x170]
push 0x20
push eax
call fcn.00531d3f
push 0x561118
jmp 0x40ef80
cmp dword [ebp - 0x2c38], 0
je 0x40eec5
push str.CInitInfoStorage::Init___WIN64.bIsIA64_n
push 5
call fcn.00411380
push str.WINXP_IA64
lea edx, [ebp - 0x1b0]
push 0x20
push edx
call fcn.00531d3f
push str.WINNT5_IA64
lea eax, [ebp - 0x170]
push 0x20
push eax
call fcn.00531d3f
push str.IA64
jmp 0x40ef3e
cmp dword [ebp - 0x2c3c], 0
je 0x40ef07
push str.CInitInfoStorage::Init___WIN64.bIsAMD64_n
push 5
call fcn.00411380
push str.WINXP_x64
lea edx, [ebp - 0x1b0]
push 0x20
push edx
call fcn.00531d3f
push str.WINNT5_x64
lea eax, [ebp - 0x170]
push 0x20
push eax
call fcn.00531d3f
push 0x561118
jmp 0x40ef3e
push str.CInitInfoStorage::Init___WinXP_n
push 5
call fcn.00411380
push str.WINXP
lea edx, [ebp - 0x1b0]
push 0x20
push edx
call fcn.00531d3f
push str.WINNT5
lea eax, [ebp - 0x170]
push 0x20
push eax
call fcn.00531d3f
push 0x560fd8
lea ecx, [ebp - 0x130]
push 0x20
push ecx
call fcn.00531d3f
add esp, 0x2c
jmp 0x40ef91
push str.CInitInfoStorage::Init___WINNT.bWin2008Server_n
jmp 0x40ee09
push str.WIN2K3
push 0x20
push edx
call fcn.00531d3f
push str.WINNT5
lea eax, [ebp - 0x170]
push 0x20
push eax
call fcn.00531d3f
push 0x560fd8
lea ecx, [ebp - 0x130]
push 0x20
push ecx
call fcn.00531d3f
add esp, 0x24
mov edx, dword [ebp - 0x2cf8]
push edx
push 0
lea eax, [ebp - 0x1b0]
push eax
lea ecx, [ebp - 0x244]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov edi, dword [ebp - 0x2d08]
mov dword [edi + 0x11c], eax
xor ebx, ebx
add edi, 0x2e0
lea esi, [ebp - 0x1b0]
jmp 0x40efd0
push 9
push 0x560f50
lea ecx, [ebp - 0x2728]
call fcn.004026d0
push 0x5611f8
push esi
call fcn.00531ea5
add esp, 8
test eax, eax
je 0x40f02c
push 1
push 0x560f4c
lea ecx, [ebp - 0x2728]
call fcn.00405db0
mov eax, esi
lea edx, [eax + 2]
jmp 0x40f010
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40f010
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x2728]
call fcn.00405db0
cmp dword [ebp - 0x2714], 8
mov eax, dword [ebp - 0x2728]
jae 0x40f041
lea eax, [ebp - 0x2728]
mov edx, dword [ebp - 0x2cf8]
push eax
push 0
push edx
mov ecx, edi
call sym.Setup.exe_public:_int___thiscall_CDeviceInfSection::Init_wchar_t_const___class_CInfStringTable___wchar_t_const__
test eax, eax
je 0x40f073
mov ecx, edi
call sym.Setup.exe_public:_int___thiscall_CDeviceInfSection::GetList_void_
test eax, eax
je 0x40f06c
mov ecx, edi
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
jne 0x40f085
mov ecx, edi
call sym.Setup.exe_public:_void___thiscall_CDeviceInfSection::Clear_void_
inc ebx
add esi, 0x40
cmp ebx, 4
jb 0x40efd0
jmp 0x40f115
lea ecx, [ebp - 0x26d0]
call fcn.0043a1a0
mov ecx, edi
mov byte [ebp - 4], 0x27
xor esi, esi
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x40f0e7
push 0x2c
push esi
mov ecx, edi
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
push eax
lea ecx, [ebp - 0x26d0]
call fcn.0043a510
lea ecx, [ebp - 0x26d0]
call fcn.00438c50
cmp eax, 1
je 0x40f0db
lea ecx, [ebp - 0x26d0]
call fcn.00438c50
cmp eax, 3
jne 0x40f299
mov ecx, edi
inc esi
call sym.Setup.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp esi, eax
jb 0x40f0a1
push str.CInitInfoStorage::Init_m_Extensions_init_succeeded._n
push 5
call fcn.00411380
mov ecx, dword [ebp - 0x2d08]
mov dword [ecx + 0x35c], 1
add esp, 8
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 9
call fcn.0043a1b0
mov edi, dword [ebp - 0x2d08]
xor ebx, ebx
lea esi, [ebp - 0x1b0]
push 5
push str.Files
lea ecx, [ebp - 0x27b4]
call fcn.004026d0
push 0x5611f8
push esi
call fcn.00531ea5
add esp, 8
test eax, eax
je 0x40f17c
push 1
push 0x560f4c
lea ecx, [ebp - 0x27b4]
call fcn.00405db0
mov eax, esi
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40f160
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x27b4]
call fcn.00405db0
cmp dword [ebp - 0x27a0], 8
mov eax, dword [ebp - 0x27b4]
jae 0x40f191
lea eax, [ebp - 0x27b4]
mov edx, dword [ebp - 0x2cf8]
push edx
push 0x104
lea ecx, [ebp - 0x24ac]
push ecx
push 0x55a24c
push eax
lea edx, [ebp - 0x60]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
push eax
lea ecx, [edi + 8]
call fcn.00439600
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40f1c6
sub eax, edx
sar eax, 1
jne 0x40f1e4
inc ebx
add esi, 0x40
cmp ebx, 4
jb 0x40f123
lea ecx, [ebp - 0x24ac]
push ecx
lea ecx, [edi + 8]
call fcn.00439600
lea edx, [eax + 2]
xor ebx, ebx
jmp 0x40f200
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x40f200
sub eax, edx
sar eax, 1
je 0x40f25b
lea edx, [ebp - 0x24ac]
push edx
lea ecx, [edi + 8]
call fcn.00439600
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
cmp dx, bx
jne 0x40f225
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [edi + 0x1dc]
push eax
mov ecx, esi
call fcn.004026d0
cmp dword [esi + 0x14], 8
jb 0x40f24b
mov esi, dword [esi]
push esi
push str.CInitInfoStorage::Init_m_strUninstallerFiles____1_s___n
push 5
call fcn.00411380
add esp, 0xc
mov eax, dword [edi + 0x1d0]
cmp eax, ebx
jne 0x40f2e0
cmp dword [edi + 0x1ec], ebx
jne 0x40f279
cmp dword [edi + 0x208], ebx
je 0x40f64c
cmp eax, ebx
jne 0x40f2e0
push str.Version
lea eax, [ebp - 0x60]
push eax
push 2
add edi, 0x38
push edi
call 0x4084a0
add esp, 0x10
jmp 0x40f7b1
cmp dword [ebp - 0x2714], 8
mov ebx, dword [ebp - 0x2728]
jae 0x40f2ae
lea ebx, [ebp - 0x2728]
push esi
mov ecx, edi
call sym.Setup.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
mov eax, dword [ebp - 0x2d08]
push ebx
add eax, 0x38
push 2
push eax
call 0x4084a0
add esp, 0x10
lea ecx, [ebp - 0x26d0]
mov byte [ebp - 4], 9
call fcn.0043a1b0
jmp 0x40f7b1
cmp dword [edi + 0x1ec], ebx
jne 0x40f304
push str.Files
lea ecx, [ebp - 0x60]
push ecx
push 2
add edi, 0x38
push edi
call 0x4084a0
add esp, 0x10
jmp 0x40f7b1
cmp dword [edi + 0x208], ebx
jne 0x40f328
push str.TargetDir
lea edx, [ebp - 0x60]
push edx
push 2
add edi, 0x38
push edi
call 0x4084a0
add esp, 0x10
jmp 0x40f7b1
mov ecx, dword [edi + 0x12c]
sub ecx, dword [edi + 0x128]
mov eax, 0x78787879
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x2d04], ebx
je 0x40f64c
mov dword [ebp - 0x14], ebx
jmp 0x40f360
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
lea ecx, [ebp - 0x2d00]
call fcn.00407f60
lea ecx, [ebp - 0x2750]
mov byte [ebp - 4], 0x28
call fcn.00431540
push 1
push 0x55a33c
lea ecx, [ebp - 0x2d00]
mov byte [ebp - 4], 0x29
call fcn.00405ed0
mov eax, dword [ebp - 0x2d08]
mov ecx, dword [eax + 0x128]
mov edx, dword [ebp - 0x14]
cmp dword [ecx + edx + 0xdc], 8
lea eax, [ecx + edx + 0xc8]
jb 0x40f3b9
mov edx, dword [eax]
jmp 0x40f3bb
mov edx, eax
test edx, edx
jne 0x40f3c3
xor eax, eax
jmp 0x40f3df
mov eax, edx
lea esi, [eax + 2]
jmp 0x40f3d0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40f3d0
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2d00]
call fcn.00405ed0
mov edx, dword [ebp - 0x2d00]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x40f414
push 0
lea ecx, [ebp - 0x2d00]
call fcn.004012e0
mov edx, dword [ebp - 0x2d00]
push edx
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x2750]
call fcn.004310d0
test eax, eax
je 0x40f5d0
call fcn.0043d2a1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x40f6d7
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x2cfc], eax
push str.CInitInfoStorage::Init_already_exist_Uninstaller_registry._n
push 4
mov byte [ebp - 4], 0x2a
call fcn.00411380
add esp, 8
push str.Version
lea ecx, [ebp - 0x2750]
call fcn.004312a0
test eax, eax
jne 0x40f47e
xor ecx, ecx
jmp 0x40f492
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40f483
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2cfc]
call fcn.00401600
mov ebx, dword [ebp - 0x2cfc]
push ebx
push str.CInitInfoStorage::Init___VERSION_CHECK___Registered_Version___1_s_._n
push 4
call fcn.00411380
add esp, 0xc
lea ecx, [ebp - 0x2750]
call fcn.00431240
cmp dword [ebx - 0xc], 0
je 0x40f5b0
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x40f4ec
push 0
lea ecx, [ebp - 0x2cfc]
call fcn.004012e0
mov ebx, dword [ebp - 0x2cfc]
lea ecx, [ebp - 0x1c]
push ecx
lea edx, [ebp - 0x20]
push edx
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp - 0x28]
push ecx
push str._d._d._d._d
push ebx
call fcn.005322a2
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2d08]
shl esi, 0x10
add esi, dword [ebp - 0x24]
shl edi, 0x10
add edi, dword [ebp - 0x1c]
add esp, 0x18
cmp dword [eax + 0x1d4], 8
jb 0x40f533
mov eax, dword [eax + 0x1c0]
jmp 0x40f538
add eax, 0x1c0
push eax
push str.CInitInfoStorage::Init___VERSION_CHECK___Media_Version___1_s_._n
push 4
call fcn.00411380
mov eax, dword [ebp - 0x2d08]
add esp, 0xc
cmp dword [eax + 0x1d4], 8
jb 0x40f55f
mov eax, dword [eax + 0x1c0]
jmp 0x40f564
add eax, 0x1c0
lea edx, [ebp - 0x1c]
push edx
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x28]
push ecx
push str._d._d._d._d
push eax
call fcn.005322a2
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
shl ecx, 0x10
add ecx, dword [ebp - 0x1c]
push 1
shl eax, 0x10
add eax, dword [ebp - 0x24]
push ecx
push eax
push edi
push esi
call fcn.00411d40
add esp, 0x2c
test eax, eax
je 0x40f6e1
cmp eax, 1
je 0x40f74f
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 0x29
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40f5d0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x2750]
mov byte [ebp - 4], 0x28
call fcn.00431570
mov eax, dword [ebp - 0x2d00]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f605
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x2d08]
mov ecx, dword [eax + 0x12c]
sub ecx, dword [eax + 0x128]
mov esi, dword [ebp - 0x2d04]
add dword [ebp - 0x14], 0x110
mov eax, 0x78787879
imul ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
inc esi
add ecx, edx
mov dword [ebp - 0x2d04], esi
cmp esi, ecx
jb 0x40f360
mov edi, dword [ebp - 0x2d08]
xor ebx, ebx
push 0x2002
lea ecx, [ebp - 0x24ac]
push ebx
push ecx
call fcn.00531b10
mov esi, dword [ebp - 0x2cf8]
add esp, 0xc
push esi
push 0x1001
lea edx, [ebp - 0x24ac]
push edx
push 0x55a24c
push str.Srv2008_Edition
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x24ac]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x40f691
sub eax, edx
sar eax, 1
je 0x40f77c
lea ecx, [ebp - 0x24ac]
push 0x10
lea edx, [ebp - 0x2d0c]
push edx
mov eax, ecx
push eax
mov dword [ebp - 0x2d0c], ecx
call fcn.00532202
add esp, 0xc
mov dword [edi + 0x120], eax
mov dword [edi + 0x124], edx
jmp 0x40f788
push 0x80004005
call fcn.00401020
mov edx, dword [ebp - 0x2d08]
add edx, 0x38
push 0x2720
push edx
call 0x4084a0
add ebx, 0xfffffff0
add esp, 8
mov byte [ebp - 4], 0x29
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f718
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
lea ecx, [ebp - 0x2750]
mov byte [ebp - 4], 0x28
call fcn.00431570
mov eax, dword [ebp - 0x2d00]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f7b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40f7b1
mov ecx, dword [ebp - 0x2d08]
add ecx, 0x38
push 0x2722
push ecx
call 0x4084a0
add ebx, 0xfffffff0
add esp, 8
mov byte [ebp - 4], 0x29
lea edx, [ebx + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jmp 0x40f70c
mov dword [edi + 0x120], ebx
mov dword [edi + 0x124], ebx
push esi
push 1
lea ecx, [ebp - 0x20c]
push ecx
mov edx, ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push esi
mov ecx, edi
mov dword [edi + 0x364], eax
call fcn.0040a9b0
test eax, eax
jne 0x40f8f9
push str.CInitInfoStorage::Init________________________ERROR_OUT_n
push 4
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x29bc]
mov byte [ebp - 4], 8
call sym.Setup.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x2834]
mov byte [ebp - 4], 7
call sym.Setup.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x2a20]
mov byte [ebp - 4], 6
call sym.Setup.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x2d34]
mov byte [ebp - 4], 5
call fcn.0043a1b0
lea ecx, [ebp - 0x2cf4]
mov byte [ebp - 4], 4
call fcn.0043ae50
mov ebx, dword [ebp - 0x2d1c]
test ebx, ebx
je 0x40f841
mov edi, dword [ebp - 0x2d18]
mov esi, ebx
cmp ebx, edi
je 0x40f838
lea eax, [ebp - 0x2d10]
push esi
push eax
call fcn.00406920
add esi, 0x1c
add esp, 8
cmp esi, edi
jne 0x40f821
push ebx
call fcn.0043c798
add esp, 4
mov esi, 8
cmp dword [ebp - 0x27bc], esi
jb 0x40f85d
mov ecx, dword [ebp - 0x27d0]
push ecx
call fcn.0043c798
add esp, 4
xor edx, edx
mov edi, 7
mov dword [ebp - 0x27bc], edi
mov dword [ebp - 0x27c0], 0
mov word [ebp - 0x27d0], dx
cmp dword [ebp - 0x27a0], esi
jb 0x40f892
mov eax, dword [ebp - 0x27b4]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x27a0], edi
mov dword [ebp - 0x27a4], 0
mov word [ebp - 0x27b4], cx
cmp dword [ebp - 0x2714], esi
jb 0x40f8c2
mov edx, dword [ebp - 0x2728]
push edx
call fcn.0043c798
add esp, 4
xor eax, eax
mov dword [ebp - 0x2714], edi
mov dword [ebp - 0x2718], 0
mov word [ebp - 0x2728], ax
cmp dword [ebp - 0x26f8], esi
jb 0x40f8f2
mov ecx, dword [ebp - 0x270c]
push ecx
call fcn.0043c798
add esp, 4
xor eax, eax
jmp 0x40fa13
push 0x560b50
push 4
mov dword [edi + 0x360], 1
call fcn.00411380
add esp, 8
lea ecx, [ebp - 0x29bc]
mov byte [ebp - 4], 8
call sym.Setup.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x2834]
mov byte [ebp - 4], 7
call sym.Setup.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x2a20]
mov byte [ebp - 4], 6
call sym.Setup.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x2d34]
mov byte [ebp - 4], 5
call fcn.0043a1b0
lea ecx, [ebp - 0x2cf4]
mov byte [ebp - 4], 4
call fcn.0043ae50
lea ecx, [ebp - 0x2d1c]
call 0x4093c0
cmp dword [ebp - 0x27bc], 8
jb 0x40f980
mov edx, dword [ebp - 0x27d0]
push edx
call fcn.0043c798
add esp, 4
xor eax, eax
mov edi, 8
mov esi, 7
mov dword [ebp - 0x27bc], esi
mov dword [ebp - 0x27c0], ebx
mov word [ebp - 0x27d0], ax
cmp dword [ebp - 0x27a0], edi
jb 0x40f9b6
mov ecx, dword [ebp - 0x27b4]
push ecx
call fcn.0043c798
add esp, 4
xor edx, edx
mov dword [ebp - 0x27a0], esi
mov dword [ebp - 0x27a4], ebx
mov word [ebp - 0x27b4], dx
cmp dword [ebp - 0x2714], edi
jb 0x40f9e2
mov eax, dword [ebp - 0x2728]
push eax
call fcn.0043c798
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x2714], esi
mov dword [ebp - 0x2718], ebx
mov word [ebp - 0x2728], cx
cmp dword [ebp - 0x26f8], edi
jb 0x40fa0e
mov edx, dword [ebp - 0x270c]
push edx
call fcn.0043c798
add esp, 4
mov eax, 1
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.00530f8d
mov esp, ebp
pop ebp
ret 0x10