Function at 0x4088f0
Capabilities:
Check if file exists
Get file attributes
Identify system language via api
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5562ea
mov eax, dword fs:[0]
push eax
mov eax, 0x3068
call fcn.0053f7f0
mov eax, dword [0x5d7b20]
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 dword [ebp - 0x3068], ebx
call fcn.0044c104
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x408944
push 0x80004005
call fcn.00403e70
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x3058], eax
mov dword [ebp - 4], 0
call fcn.0044c104
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x408977
push 0x80004005
call fcn.00403e70
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x3070], eax
mov edx, dword [str.Languages]
xor ecx, ecx
xor eax, eax
mov word [ebp - 0x30], cx
mov ecx, dword [0x56a87c]
mov dword [ebp - 0x2e], eax
mov dword [ebp - 0x2a], eax
mov word [ebp - 0x26], ax
mov eax, dword [0x56a878]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [str.Setup]
mov dword [ebp - 0x44], edx
mov edx, dword [0x56a880]
mov dword [ebp - 0x40], eax
mov eax, dword [0x56a884]
mov dword [ebp - 0x50], ecx
mov ecx, dword [str.GUID]
mov dword [ebp - 0x38], edx
mov edx, dword [0x56a86c]
mov dword [ebp - 0x34], eax
mov eax, dword [0x56a870]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [str.OPTION]
mov dword [ebp - 0x4c], edx
mov edx, dword [0x56a860]
mov dword [ebp - 0x48], eax
mov ax, word [0x56a864]
mov dword [ebp - 0x6c], ecx
mov cx, word [0x56a858]
mov dword [ebp - 0x58], edx
mov edx, dword [0x56a850]
mov word [ebp - 0x54], ax
mov eax, dword [0x56a854]
mov word [ebp - 0x60], cx
lea ecx, [ebp - 0x3054]
mov byte [ebp - 4], 1
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x64], eax
call fcn.004489d0
lea ecx, [ebp - 0x2da0]
mov byte [ebp - 4], 2
call sym.DelDrv.exe_public:_void___thiscall_CDeviceInfSection::constructor_void_
cmp dword [ebp - 0x2fbc], 0
mov byte [ebp - 4], 3
je 0x408a59
push str..x64
push 6
lea edx, [ebp - 0x30]
push edx
jmp 0x408a6d
cmp dword [ebp - 0x2fb8], 0
je 0x408a75
push str..IA64
push 6
lea eax, [ebp - 0x30]
push eax
call fcn.0053eeab
add esp, 0xc
mov edx, dword [ebx + 0x68]
push 0
push 0
push 0x101
lea ecx, [ebp - 0x474]
push ecx
push 0
push 0
push 0
push 0
push edx
call fcn.0053e704
lea eax, [ebp - 0x474]
add esp, 0x24
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408aa2
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x474]
push eax
lea ecx, [ebp - 0x3058]
call fcn.00404df0
mov eax, dword [ebp - 0x3058]
push 0x101
lea ecx, [ebp - 0xc9c]
push ecx
push 0x101
lea edx, [ebp - 0x474]
push edx
push 0
push 0
push 0
push 0
push eax
call fcn.0053e704
lea ecx, [ebp - 0x30]
push ecx
lea edx, [ebp - 0xc9c]
push edx
call fcn.0053e2bf
add esp, 0x2c
push 0
push 0
test eax, eax
jne 0x408b25
mov edx, dword [ebx + 0x68]
push eax
push eax
push 0x105
lea eax, [ebp - 0x680]
push eax
push 4
lea ecx, [ebp - 0x24]
push ecx
push edx
jmp 0x408b47
push 0x101
lea eax, [ebp - 0x474]
push eax
mov eax, dword [ebx + 0x68]
push 0x105
lea ecx, [ebp - 0x680]
push ecx
push 4
lea edx, [ebp - 0x24]
push edx
push eax
call fcn.0053e704
lea eax, [ebp - 0x24]
add esp, 0x24
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408b55
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x24]
push ecx
lea ecx, [ebp - 0x3058]
call fcn.00404df0
lea eax, [ebp - 0x680]
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408b80
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x680]
push edx
lea ecx, [ebp - 0x3058]
call fcn.00405330
lea eax, [ebp - 0x474]
lea edx, [eax + 2]
jmp 0x408bb0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408bb0
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x474]
push eax
lea ecx, [ebp - 0x3058]
call fcn.00405330
push 4
push str..ini
lea ecx, [ebp - 0x3058]
call fcn.00405330
push 0x104
lea ecx, [ebp - 0xa98]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x101
lea edx, [ebp - 0x270]
push edx
push 0x105
lea eax, [ebp - 0x88c]
push eax
push 0
push 0
push 0
lea ecx, [ebp - 0xa98]
push 0
push ecx
call fcn.0053e704
lea esi, [ebx + 0xb8]
lea eax, [ebp - 0x88c]
add esp, 0x24
mov dword [ebp - 0x306c], esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408c40
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x88c]
push edx
mov ecx, esi
call fcn.00404df0
lea eax, [ebp - 0x270]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408c67
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x270]
push eax
mov ecx, esi
call fcn.00405330
mov ecx, dword [esi]
push ecx
push str.CInitInfoStorage::GetProductName_Default_product_name___1_s_._n
push 2
call fcn.00403ab0
mov edi, dword [ebp - 0x3058]
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
add esp, 0xc
or ecx, eax
jge 0x408cbf
push 0
lea ecx, [ebp - 0x3058]
call fcn.004045b0
mov edi, dword [ebp - 0x3058]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x408cee
push edi
push 1
add ebx, 0x11c
push ebx
call fcn.004060c0
push str.CDelDrvApp::GetInitInfo_strIniFile_is_not_found._n
push 2
call fcn.00403ab0
add esp, 0x14
jmp 0x4097c4
lea eax, [ebp - 0x24]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408cf4
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebx + 0xc0]
call fcn.00404df0
lea eax, [ebp - 0x680]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408d20
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x680]
push eax
lea ecx, [ebx + 0xc0]
call fcn.00405330
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x408d64
push 0
lea ecx, [ebp - 0x3058]
call fcn.004045b0
mov edi, dword [ebp - 0x3058]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push edi
push 0
push str.EnableVisualStyle
lea ecx, [ebp - 0x50]
push ecx
call esi
test eax, eax
jne 0x408d9b
push str.UxTheme.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x408d9b
push str.SetThemeAppProperties
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 1
call eax
lea edx, [ebp - 0x44]
push edx
push 0
push edi
lea ecx, [ebp - 0x2da0]
call sym.DelDrv.exe_public:_int___thiscall_CDeviceInfSection::Init_wchar_t_const___class_CInfStringTable___wchar_t_const__
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
je 0x409794
push fcn.004479c0
push fcn.004479b0
push 3
push 0x18
lea eax, [ebp - 0x2ce8]
push eax
call fcn.0053f788
lea ecx, [ebp - 0x2da0]
mov byte [ebp - 4], 4
call sym.DelDrv.exe_public:_int___thiscall_CDeviceInfSection::GetList_void_
mov ecx, dword [ebp + 8]
xor edx, edx
movzx eax, cx
cmp dx, cx
jne 0x408e28
push edi
push edx
push str.LanguageFunction
lea eax, [ebp - 0x50]
push eax
call esi
dec eax
je 0x408e1f
dec eax
je 0x408e17
dec eax
je 0x408e0f
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
jmp 0x408e25
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
jmp 0x408e25
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLCID]
jmp 0x408e25
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
movzx esi, ax
push esi
lea ecx, [ebp - 0x1c]
push str._04x
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push edi
push 0x104
lea edx, [ebp - 0x2ca0]
push edx
push 0x568928
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x44]
push ecx
call ebx
lea eax, [ebp - 0x2ca0]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408e63
sub eax, edx
sar eax, 1
je 0x408e97
push 0x2c
lea edx, [ebp - 0x2ca0]
push edx
lea ecx, [ebp - 0x2ce8]
call fcn.00447da0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x2ce8]
call fcn.00448140
and esi, 0x3ff
push esi
lea ecx, [ebp - 0x1c]
push str._04x
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push edi
push 0x104
lea edx, [ebp - 0x2ca0]
push edx
push 0x568928
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x44]
push ecx
call ebx
lea eax, [ebp - 0x2ca0]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408ed5
sub eax, edx
sar eax, 1
je 0x408f09
push 0x2c
lea edx, [ebp - 0x2ca0]
push edx
lea ecx, [ebp - 0x2cd0]
call fcn.00447da0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x2cd0]
call fcn.00448140
push 0
lea ecx, [ebp - 0x1c]
push str._04x
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push edi
push 0x104
lea edx, [ebp - 0x2ca0]
push edx
push 0x568928
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x44]
push ecx
call ebx
lea eax, [ebp - 0x2ca0]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x408f42
sub eax, edx
sar eax, 1
je 0x408f76
push 0x2c
lea edx, [ebp - 0x2ca0]
push edx
lea ecx, [ebp - 0x2cb8]
call fcn.00447da0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x2cb8]
call fcn.00448140
push edi
push 0
push str.DeleteWSDPort
lea ecx, [ebp - 0x6c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, dword [ebp - 0x3068]
push 0x2002
lea edx, [ebp - 0x2ca0]
push 0
push edx
mov dword [esi + 0x10c], eax
call fcn.0053e550
add esp, 0xc
push edi
push 0x1001
lea eax, [ebp - 0x2ca0]
push eax
push 0x568928
push str.Srv2008_Edition
push 0x56a674
call ebx
lea eax, [ebp - 0x2ca0]
lea edx, [eax + 2]
xor edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x408fd3
sub eax, edx
sar eax, 1
je 0x409012
lea ecx, [ebp - 0x2ca0]
push 0x10
lea edx, [ebp - 0x3064]
push edx
mov eax, ecx
push eax
mov dword [ebp - 0x3064], ecx
call fcn.0053f75c
add esp, 0xc
mov dword [esi + 0x110], eax
mov dword [esi + 0x114], edx
jmp 0x40901e
mov dword [esi + 0x110], edi
mov dword [esi + 0x114], edi
lea ecx, [ebp - 0x2ce8]
mov dword [ebp - 0x3064], edi
mov dword [ebp - 0x305c], ecx
mov esi, dword [ebp - 0x305c]
push 0x20
mov ecx, esi
call fcn.004472b0
mov ecx, esi
call fcn.00445fe0
cmp eax, 2
jne 0x4094ae
push str._SELECT_
push 0
mov ecx, esi
call fcn.00446210
push eax
call fcn.0053e2bf
add esp, 8
test eax, eax
jne 0x4094ae
mov si, word [ebp + 0xc]
xor edx, edx
cmp dx, si
je 0x409094
movzx eax, si
push eax
push str.CInitInfoStorage::Init_nDefaultLangID__0x_04x_n
push 4
call fcn.00403ab0
add esp, 0xc
movzx ebx, si
jmp 0x409393
lea ecx, [ebp - 0x2d1c]
call fcn.004479b0
xor esi, esi
push esi
lea ecx, [ebp - 0x194]
mov byte [ebp - 4], 5
call fcn.00440ba0
mov eax, 7
xor ecx, ecx
mov dword [ebp - 0x3074], esi
mov dword [ebp - 0x2d28], eax
mov dword [ebp - 0x2d2c], esi
mov word [ebp - 0x2d3c], cx
xor edx, edx
mov dword [ebp - 0x2cf0], eax
mov dword [ebp - 0x2cf4], esi
mov word [ebp - 0x2d04], dx
lea ecx, [ebp - 0x2da0]
mov byte [ebp - 4], 8
xor ebx, ebx
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x4092f2
mov edi, dword [ebp - 0x3068]
push 0x10
lea eax, [ebp - 0x3074]
push eax
push ebx
lea ecx, [ebp - 0x2da0]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
call fcn.0053f49b
movzx ecx, ax
add esp, 0xc
push 0x2c
mov dword [ebp - 0x3060], ecx
push ebx
lea ecx, [ebp - 0x2da0]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
push eax
lea ecx, [ebp - 0x2d1c]
call fcn.00447da0
lea ecx, [ebp - 0x2d1c]
call fcn.00445fe0
cmp eax, 3
jne 0x4092de
mov eax, dword [edi + 0xc0]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40917c
push 0
lea ecx, [edi + 0xc0]
call fcn.004045b0
mov edx, dword [edi + 0xc0]
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409187
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2d3c]
call fcn.004021b0
push 1
lea ecx, [ebp - 0x2d1c]
call fcn.00446210
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4091b5
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2d3c]
call fcn.00402090
mov eax, dword [edi + 0xc0]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x4091f3
push 0
lea ecx, [edi + 0xc0]
call fcn.004045b0
mov edx, dword [edi + 0xc0]
mov eax, edx
lea esi, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409200
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2d04]
call fcn.004021b0
push 2
lea ecx, [ebp - 0x2d1c]
call fcn.00446210
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x409230
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2d04]
call fcn.00402090
cmp dword [ebp - 0x2d2c], 0x104
ja 0x409832
cmp dword [ebp - 0x2cf4], 0x104
ja 0x409832
mov eax, dword [ebp - 0x2d3c]
mov esi, 8
cmp dword [ebp - 0x2d28], esi
jae 0x409285
lea eax, [ebp - 0x2d3c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4092de
mov eax, dword [ebp - 0x2d04]
cmp dword [ebp - 0x2cf0], esi
jae 0x4092a5
lea eax, [ebp - 0x2d04]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4092de
push 0x20
lea ecx, [ebp - 0x2d1c]
call fcn.004472b0
push 0
lea ecx, [ebp - 0x2d1c]
call fcn.00446210
mov edx, dword [ebp - 0x3060]
push eax
push edx
lea ecx, [ebp - 0x194]
call fcn.00440ac0
lea ecx, [ebp - 0x2da0]
inc ebx
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp ebx, eax
jb 0x409105
lea ecx, [ebp - 0x194]
call fcn.0044cc64
cmp eax, 2
je 0x40997b
lea ecx, [ebp - 0x194]
call fcn.00440290
cmp dword [ebp - 0x2cf0], 8
movzx ebx, ax
jb 0x40932c
mov eax, dword [ebp - 0x2d04]
push eax
call fcn.00449b7c
add esp, 4
xor edi, edi
xor ecx, ecx
cmp dword [ebp - 0x2d28], 8
mov esi, 7
mov dword [ebp - 0x2cf0], esi
mov dword [ebp - 0x2cf4], edi
mov word [ebp - 0x2d04], cx
jb 0x409360
mov edx, dword [ebp - 0x2d3c]
push edx
call fcn.00449b7c
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x194]
mov dword [ebp - 0x2d28], esi
mov dword [ebp - 0x2d2c], edi
mov word [ebp - 0x2d3c], ax
mov byte [ebp - 4], 5
call fcn.00408810
lea ecx, [ebp - 0x2d1c]
mov byte [ebp - 4], 4
call fcn.004479c0
test bx, bx
je 0x4094ae
lea ecx, [ebp - 0x2da0]
xor esi, esi
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x4094ae
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
jmp 0x4093c0
push esi
lea ecx, [ebp - 0x2da0]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
test eax, eax
je 0x4093ff
movzx ecx, bx
push ecx
lea edx, [ebp - 0x1c]
push str._04x
push edx
call edi
add esp, 0xc
lea eax, [ebp - 0x1c]
push eax
push esi
lea ecx, [ebp - 0x2da0]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
call fcn.0053e2bf
add esp, 8
test eax, eax
je 0x409414
lea ecx, [ebp - 0x2da0]
inc esi
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp esi, eax
jb 0x4093c0
jmp 0x4094ae
push str.Kernel32.DLL
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x2c
push esi
lea ecx, [ebp - 0x2da0]
mov edi, eax
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
mov esi, dword [ebp - 0x305c]
push eax
mov ecx, esi
call fcn.00447da0
lea ecx, [ebp - 0x1c]
push ecx
mov ecx, esi
call fcn.00448140
push 0x20
mov ecx, esi
call fcn.004472b0
test edi, edi
je 0x4094ae
push str.SetThreadLocale
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x4094ae
mov edx, ebx
and edx, 0xfc00
xor eax, eax
cmp ax, dx
jne 0x409498
and ebx, 0x3ff
or ebx, 0x400
movzx esi, bx
push esi
push str.CInitInfoStorage::Init_nTempLangID__0x_1_lx__n
push 5
call fcn.00403ab0
add esp, 0xc
push esi
jmp 0x40949c
movzx ecx, bx
push ecx
call edi
push eax
push str.CInitInfoStorage::Init_SetThreadLocale_ret_1_d__n
push 5
call fcn.00403ab0
add esp, 0xc
mov ebx, dword [ebp - 0x305c]
mov ecx, ebx
call fcn.00445fe0
cmp eax, 4
jne 0x409738
mov ecx, 7
xor eax, eax
xor edx, edx
mov dword [ebp - 0x2cf0], ecx
mov dword [ebp - 0x2cf4], eax
mov word [ebp - 0x2d04], dx
mov dword [ebp - 0x2d0c], ecx
mov dword [ebp - 0x2d10], eax
mov word [ebp - 0x2d20], ax
mov edi, dword [ebp - 0x3068]
mov eax, dword [edi + 0xc0]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
mov byte [ebp - 4], 0xa
jge 0x40951e
push edx
lea ecx, [edi + 0xc0]
call fcn.004045b0
mov esi, dword [edi + 0xc0]
mov eax, esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409530
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x2d04]
call fcn.004021b0
push 1
mov ecx, ebx
call fcn.00446210
mov ecx, eax
lea esi, [ecx + 2]
lea ebx, [ebx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x409560
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2d04]
call fcn.00402090
mov eax, dword [edi + 0xc0]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40959e
push 0
lea ecx, [edi + 0xc0]
call fcn.004045b0
mov esi, dword [edi + 0xc0]
mov eax, esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4095b0
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x2d20]
call fcn.004021b0
push 2
mov ecx, ebx
call fcn.00446210
mov ecx, eax
lea esi, [ecx + 2]
lea ebx, [ebx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4095e0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2d20]
call fcn.00402090
mov eax, 0x104
cmp dword [ebp - 0x2cf4], eax
ja 0x409c24
cmp dword [ebp - 0x2d10], eax
ja 0x409c24
mov eax, dword [ebp - 0x2d04]
mov ebx, 8
cmp dword [ebp - 0x2cf0], ebx
jae 0x409632
lea eax, [ebp - 0x2d04]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push eax
call esi
cmp eax, 0xffffffff
je 0x409660
mov eax, dword [ebp - 0x2d20]
cmp dword [ebp - 0x2d0c], ebx
jae 0x409654
lea eax, [ebp - 0x2d20]
push eax
call esi
cmp eax, 0xffffffff
jne 0x409a21
mov eax, dword [ebp - 0x2d04]
cmp dword [ebp - 0x2cf0], ebx
jae 0x409674
lea eax, [ebp - 0x2d04]
push eax
call esi
cmp eax, 0xffffffff
je 0x40969c
mov eax, dword [ebp - 0x2d20]
cmp dword [ebp - 0x2d0c], ebx
jae 0x409690
lea eax, [ebp - 0x2d20]
push eax
call esi
cmp eax, 0xffffffff
je 0x409b99
mov eax, dword [ebp - 0x2d04]
cmp dword [ebp - 0x2cf0], ebx
jae 0x4096b0
lea eax, [ebp - 0x2d04]
push eax
call esi
cmp eax, 0xffffffff
jne 0x4096d8
mov eax, dword [ebp - 0x2d20]
cmp dword [ebp - 0x2d0c], ebx
jae 0x4096cc
lea eax, [ebp - 0x2d20]
push eax
call esi
cmp eax, 0xffffffff
jne 0x409bc4
push str.CInitInfoStorage::Init_Resource_DLL_or_StringTable_ini_file_is_not_found._n
push 2
call fcn.00403ab0
add esp, 8
cmp dword [ebp - 0x2d0c], ebx
jb 0x4096fe
mov ecx, dword [ebp - 0x2d20]
push ecx
call fcn.00449b7c
add esp, 4
xor edx, edx
mov dword [ebp - 0x2d0c], 7
mov dword [ebp - 0x2d10], 0
mov word [ebp - 0x2d20], dx
mov byte [ebp - 4], 4
cmp dword [ebp - 0x2cf0], ebx
jb 0x409747
mov eax, dword [ebp - 0x2d04]
push eax
call fcn.00449b7c
add esp, 4
jmp 0x409747
mov ecx, ebx
call fcn.00445fe0
test eax, eax
jne 0x409d30
mov eax, dword [ebp - 0x3064]
add dword [ebp - 0x305c], 0x18
inc eax
mov dword [ebp - 0x3064], eax
cmp eax, 3
jb 0x409030
lea ecx, [ebp - 0x2da0]
call sym.DelDrv.exe_public:_void___thiscall_CDeviceInfSection::Clear_void_
push fcn.004479c0
push 3
push 0x18
lea eax, [ebp - 0x2ce8]
push eax
mov byte [ebp - 4], 3
call fcn.0053ee28
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov edi, dword [ebp - 0x3058]
call fcn.0044bf0f
mov esi, dword [eax + 0xc]
call fcn.0044bf0f
mov eax, dword [eax + 4]
cmp esi, dword [eax + 0x44]
jne 0x409d54
mov ecx, dword [ebp - 0x3068]
add ecx, 0x11c
push 3
push ecx
call fcn.004060c0
add esp, 8
lea ecx, [ebp - 0x2da0]
mov byte [ebp - 4], 2
call sym.DelDrv.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x3054]
mov byte [ebp - 4], 1
call fcn.004488b0
mov eax, dword [ebp - 0x3070]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x409808
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40982b
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
xor eax, eax
jmp 0x409f39
push str.CInitInfoStorage::Init_resources_path_is_too_long_1_._n
push 2
call fcn.00403ab0
push 0xb4
mov ebx, 4
lea ecx, [edi + 0x120]
push ebx
push ecx
call fcn.00405bb0
mov esi, dword [section..data]
add esp, 0x14
lea edx, [ebp - 0x3060]
push edx
lea eax, [ebp - 0x306c]
push eax
lea ecx, [esi + 4]
mov dword [ebp - 0x3060], ebx
call fcn.004052c0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x409886
mov esi, dword [eax + 0x10]
jmp 0x409888
xor esi, esi
push esi
call fcn.0044bffa
test eax, eax
je 0x40989f
push esi
push eax
lea ecx, [edi + 0x11c]
call fcn.00404cb0
mov esi, dword [section..data]
lea ecx, [ebp - 0x3060]
push ecx
lea edx, [ebp - 0x306c]
push edx
lea ecx, [esi + 4]
mov dword [ebp - 0x3060], ebx
call fcn.004052c0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x4098cd
mov eax, dword [eax + 0x14]
jmp 0x4098cf
xor eax, eax
mov ebx, 8
mov dword [edi + 0x124], eax
cmp dword [ebp - 0x2cf0], ebx
jb 0x4098f1
mov eax, dword [ebp - 0x2d04]
push eax
call fcn.00449b7c
add esp, 4
xor esi, esi
xor ecx, ecx
mov edi, 7
mov dword [ebp - 0x2cf0], edi
mov dword [ebp - 0x2cf4], esi
mov word [ebp - 0x2d04], cx
cmp dword [ebp - 0x2d28], ebx
jb 0x409924
mov edx, dword [ebp - 0x2d3c]
push edx
call fcn.00449b7c
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x194]
mov dword [ebp - 0x2d28], edi
mov dword [ebp - 0x2d2c], esi
mov word [ebp - 0x2d3c], ax
mov byte [ebp - 4], 5
call fcn.00408810
lea ecx, [ebp - 0x2d1c]
mov byte [ebp - 4], 4
call fcn.004479c0
push fcn.004479c0
push 3
push 0x18
lea ecx, [ebp - 0x2ce8]
push ecx
mov byte [ebp - 4], 3
call fcn.0053ee28
mov edi, dword [ebp - 0x3058]
jmp 0x4097c4
mov ebx, 8
cmp dword [ebp - 0x2cf0], ebx
jb 0x409997
mov edx, dword [ebp - 0x2d04]
push edx
call fcn.00449b7c
add esp, 4
xor esi, esi
xor eax, eax
mov edi, 7
mov dword [ebp - 0x2cf0], edi
mov dword [ebp - 0x2cf4], esi
mov word [ebp - 0x2d04], ax
cmp dword [ebp - 0x2d28], ebx
jb 0x4099ca
mov ecx, dword [ebp - 0x2d3c]
push ecx
call fcn.00449b7c
add esp, 4
xor edx, edx
lea ecx, [ebp - 0x194]
mov dword [ebp - 0x2d28], edi
mov dword [ebp - 0x2d2c], esi
mov word [ebp - 0x2d3c], dx
mov byte [ebp - 4], 5
call fcn.00408810
lea ecx, [ebp - 0x2d1c]
mov byte [ebp - 4], 4
call fcn.004479c0
push fcn.004479c0
push 3
push 0x18
lea eax, [ebp - 0x2ce8]
push eax
mov byte [ebp - 4], 3
call fcn.0053ee28
mov edi, dword [ebp - 0x3058]
jmp 0x4097c4
mov eax, dword [ebp - 0x2d04]
mov dword [ebp - 0x3060], 0
cmp dword [ebp - 0x2cf0], ebx
jae 0x409a3f
lea eax, [ebp - 0x2d04]
add edi, 0xc4
push eax
mov ecx, edi
call fcn.004482f0
mov eax, dword [ebp - 0x2d20]
cmp dword [ebp - 0x2d0c], ebx
jae 0x409a61
lea eax, [ebp - 0x2d20]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
jne 0x409abf
mov ecx, dword [ebp - 0x3068]
add ecx, 0x11c
push 3
push ecx
call fcn.004060c0
add esp, 8
lea ecx, [ebp - 0x2d20]
call fcn.00418450
lea ecx, [ebp - 0x2d04]
call fcn.00418450
push fcn.004479c0
push 3
push 0x18
lea edx, [ebp - 0x2ce8]
push edx
mov byte [ebp - 4], 3
call fcn.0053ee28
mov edi, dword [ebp - 0x3058]
jmp 0x4097c4
call fcn.0044bf0f
mov dword [eax + 0xc], esi
mov eax, dword [ebp - 0x3064]
lea esi, [eax + eax*2]
push 0x10
lea eax, [ebp - 0x3060]
push eax
lea esi, [ebp + esi*8 - 0x2ce8]
push 3
mov ecx, esi
call fcn.00446210
push eax
call fcn.0053f49b
movzx eax, ax
movzx ecx, ax
push ecx
lea edx, [ebp - 0x1c]
push str._04x
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
lea eax, [ebp - 0x1c]
push eax
push str.__SELECTEDLANGID__
mov ecx, edi
call fcn.00447c00
push 0
mov ecx, esi
call fcn.00446210
push eax
push 0x56a3a8
mov ecx, edi
call fcn.00447c00
push 0
mov ecx, esi
call fcn.00446210
push eax
lea ecx, [ebp - 0x305c]
call fcn.00406430
push 0x56a3a4
push 0x568c68
lea ecx, [ebp - 0x305c]
mov byte [ebp - 4], 0xb
call fcn.00404f20
mov ecx, dword [ebp - 0x305c]
push ecx
push str.__SELECTEDLANGDIR__
mov ecx, edi
call fcn.00447c00
lea ecx, [ebp - 0x305c]
call fcn.00417700
lea ecx, [ebp - 0x2d20]
call fcn.00418450
lea ecx, [ebp - 0x2d04]
mov byte [ebp - 4], 4
call fcn.00418450
jmp 0x409764
mov eax, dword [ebp - 0x2d20]
cmp dword [ebp - 0x2d0c], ebx
jae 0x409bad
lea eax, [ebp - 0x2d20]
push eax
push 1
add edi, 0x11c
push edi
call fcn.004060c0
add esp, 0xc
jmp 0x409a85
mov eax, dword [ebp - 0x2d04]
cmp dword [ebp - 0x2cf0], ebx
jae 0x409bd8
lea eax, [ebp - 0x2d04]
push eax
push 1
add edi, 0x11c
push edi
call fcn.004060c0
add esp, 0xc
lea ecx, [ebp - 0x2d20]
call fcn.00418450
lea ecx, [ebp - 0x2d04]
call fcn.00418450
push fcn.004479c0
push 3
push 0x18
lea eax, [ebp - 0x2ce8]
push eax
mov byte [ebp - 4], 3
call fcn.0053ee28
mov edi, dword [ebp - 0x3058]
jmp 0x4097c4
push str.CInitInfoStorage::Init_resources_path_is_too_long_1_._n
push 2
call fcn.00403ab0
push 0xb4
mov ebx, 4
lea ecx, [edi + 0x120]
push ebx
push ecx
call fcn.00405bb0
mov esi, dword [section..data]
add esp, 0x14
lea edx, [ebp - 0x3060]
push edx
lea eax, [ebp - 0x306c]
push eax
lea ecx, [esi + 4]
mov dword [ebp - 0x3060], ebx
call fcn.004052c0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x409c78
mov esi, dword [eax + 0x10]
jmp 0x409c7a
xor esi, esi
push esi
call fcn.0044bffa
test eax, eax
je 0x409c91
push esi
push eax
lea ecx, [edi + 0x11c]
call fcn.00404cb0
mov esi, dword [section..data]
lea ecx, [ebp - 0x3060]
push ecx
lea edx, [ebp - 0x306c]
push edx
lea ecx, [esi + 4]
mov dword [ebp - 0x3060], ebx
call fcn.004052c0
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x409cbf
mov eax, dword [eax + 0x14]
jmp 0x409cc1
xor eax, eax
mov esi, 8
mov dword [edi + 0x124], eax
cmp dword [ebp - 0x2d0c], esi
jb 0x409ce3
mov eax, dword [ebp - 0x2d20]
push eax
call fcn.00449b7c
add esp, 4
xor ebx, ebx
xor ecx, ecx
mov edi, 7
mov dword [ebp - 0x2d0c], edi
mov dword [ebp - 0x2d10], ebx
mov word [ebp - 0x2d20], cx
cmp dword [ebp - 0x2cf0], esi
jb 0x409d16
mov edx, dword [ebp - 0x2d04]
push edx
call fcn.00449b7c
add esp, 4
xor eax, eax
mov dword [ebp - 0x2cf0], edi
mov dword [ebp - 0x2cf4], ebx
mov word [ebp - 0x2d04], ax
jmp 0x409957
mov ecx, dword [ebp - 0x3068]
lea edx, [ebp - 0x1c]
push edx
lea eax, [ebp - 0x44]
push eax
add ecx, 0x11c
push 2
push ecx
call fcn.004060c0
add esp, 0x10
jmp 0x409a9b
mov esi, dword [ebp - 0x3068]
lea eax, [esi + 0xbc]
mov dword [ebp - 0x3064], eax
mov eax, dword [eax]
push eax
push str.CDelDrvApp::GetInitInfo_GUID_1_s_._n
push 5
call fcn.00403ab0
mov ecx, dword [ebp - 0x3064]
mov edx, dword [ecx]
add esp, 0xc
cmp dword [edx - 0xc], 0
jne 0x409eb4
xor eax, eax
mov dword [ebp - 0x2d28], 7
mov dword [ebp - 0x2d2c], 0
mov word [ebp - 0x2d3c], ax
push str.CDelDrvApp::GetInitInfo_use_GUID_from_ini_file._n
push 5
mov byte [ebp - 4], 0xc
call fcn.00403ab0
add esp, 8
push edi
push 0x104
lea ecx, [ebp - 0x2ca0]
push ecx
push 0x568928
lea edx, [ebp - 0x5c]
push edx
lea eax, [ebp - 0x50]
push eax
call ebx
lea ecx, [ebp - 0x2ca0]
push ecx
lea ecx, [esi + 0xc4]
call fcn.00446a30
mov ecx, eax
lea ebx, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x409df0
sub ecx, ebx
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2d3c]
call fcn.004021b0
cmp dword [ebp - 0x2d2c], 0x26
mov ebx, 8
jne 0x409e7c
mov eax, dword [ebp - 0x2d3c]
cmp dword [ebp - 0x2d28], ebx
jae 0x409e2e
lea eax, [ebp - 0x2d3c]
push eax
push str.CDelDrvApp::GetInitInfo_GUID_1_s_._n
push 5
call fcn.00403ab0
mov edx, dword [ebp - 0x2d3c]
add esp, 0xc
cmp dword [ebp - 0x2d28], ebx
jae 0x409e52
lea edx, [ebp - 0x2d3c]
test edx, edx
jne 0x409e5a
xor eax, eax
jmp 0x409e6f
mov eax, edx
lea esi, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409e60
sub eax, esi
sar eax, 1
mov ecx, dword [ebp - 0x3064]
push eax
push edx
call fcn.00404df0
mov byte [ebp - 4], 3
cmp dword [ebp - 0x2d28], ebx
jb 0x409e97
mov edx, dword [ebp - 0x2d3c]
push edx
call fcn.00449b7c
add esp, 4
xor eax, eax
mov dword [ebp - 0x2d28], 7
mov dword [ebp - 0x2d2c], 0
mov word [ebp - 0x2d3c], ax
push 0x64
call fcn.0044bffa
test eax, eax
je 0x409ecd
mov ecx, dword [ebp - 0x306c]
push 0x64
push eax
call fcn.00404cb0
lea ecx, [ebp - 0x2da0]
mov byte [ebp - 4], 2
call sym.DelDrv.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x3054]
mov byte [ebp - 4], 1
call fcn.004488b0
mov eax, dword [ebp - 0x3070]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409f11
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409f34
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
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.0053e1ad
mov esp, ebp
pop ebp
ret 8