Function at 0x4094d0
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 0x5351b5
mov eax, dword fs:[0]
push eax
mov eax, 0x3798
call fcn.0051f200
mov eax, dword [0x5a6a30]
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 - 0x377c], ebx
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x409524
push 0x80004005
call fcn.004010e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x3780], eax
xor eax, eax
xor ecx, ecx
mov edx, dword [str.Languages]
mov word [ebp - 0x3c], cx
mov ecx, dword [0x5477a4]
mov dword [ebp - 0x48], ecx
mov ecx, dword [str.Setup]
mov dword [ebp - 0x28], ecx
mov ecx, dword [str.GUID]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [str.DeviceName]
mov dword [ebp - 0x74], ecx
mov ecx, dword [0x547784]
mov dword [ebp - 4], eax
mov dword [ebp - 0x3a], eax
mov dword [ebp - 0x36], eax
mov word [ebp - 0x32], ax
mov eax, dword [0x5477a0]
mov dword [ebp - 0x68], ecx
mov ecx, dword [str.Version]
mov dword [ebp - 0x4c], eax
mov eax, dword [0x5477ac]
mov dword [ebp - 0xa8], ecx
mov ecx, dword [0x546570]
mov dword [ebp - 0x50], edx
mov edx, dword [0x5477a8]
mov dword [ebp - 0x40], eax
mov eax, dword [0x5468ec]
mov dword [ebp - 0x9c], ecx
mov ecx, dword [0x547768]
mov dword [ebp - 0x44], edx
mov edx, dword [0x5468e8]
mov dword [ebp - 0x20], eax
movzx eax, word [0x547798]
mov dword [ebp - 0x84], ecx
mov ecx, dword [0x547774]
mov dword [ebp - 0x24], edx
mov edx, dword [0x547794]
mov word [ebp - 0x54], ax
mov eax, dword [0x547780]
mov dword [ebp - 0x78], ecx
mov ecx, dword [0x54775c]
mov dword [ebp - 0x58], edx
mov edx, dword [0x54777c]
mov dword [ebp - 0x6c], eax
movzx eax, word [0x54778c]
mov dword [ebp - 0x90], ecx
mov dword [ebp - 0x70], edx
mov edx, dword [0x547788]
mov ecx, 0xb
mov esi, str.DriverUninstallerNames
lea edi, [ebp - 0x124]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x64], edx
mov edx, dword [0x546568]
mov word [ebp - 0x60], ax
mov eax, dword [0x54656c]
mov dword [ebp - 0xa4], edx
mov edx, dword [str.CommandLine]
mov dword [ebp - 0xa0], eax
mov eax, dword [0x547764]
mov dword [ebp - 0x8c], edx
mov edx, dword [0x54776c]
mov dword [ebp - 0x88], eax
mov eax, dword [0x547770]
mov dword [ebp - 0x80], edx
mov edx, dword [str.Model]
mov dword [ebp - 0x7c], eax
mov eax, dword [0x547758]
movsw word es:[edi], word [esi]
mov dword [ebp - 0x98], edx
mov dword [ebp - 0x94], eax
mov ecx, 0xc
mov esi, str.DriverUninstallerNamesEx
mov edx, dword [str.ExePath]
mov eax, dword [0x5476e4]
lea edi, [ebp - 0x158]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 7
mov esi, str.PushScanEvent
lea edi, [ebp - 0xf4]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x5476e8]
mov dword [ebp - 0xb8], edx
mov edx, dword [0x5476ec]
mov dword [ebp - 0xb4], eax
mov eax, dword [str.CmdLine]
mov dword [ebp - 0xb0], ecx
mov ecx, dword [0x5476b8]
mov dword [ebp - 0xac], edx
mov edx, dword [0x5476bc]
mov dword [ebp - 0xc8], eax
mov eax, dword [0x5476c0]
mov dword [ebp - 0xc4], ecx
lea ecx, [ebp - 0x3160]
mov dword [ebp - 0xc0], edx
mov dword [ebp - 0xbc], eax
call fcn.00429620
lea ecx, [ebp - 0x2e8c]
mov byte [ebp - 4], 1
call sym.DelDrv.exe_public:_void___thiscall_CDeviceInfSection::constructor_void_
xor eax, eax
mov dword [ebp - 0x37a0], eax
mov dword [ebp - 0x379c], eax
mov dword [ebp - 0x3798], eax
mov byte [ebp - 4], 3
cmp dword [ebp - 0x30a8], eax
je 0x409751
push str..x64
push 6
lea ecx, [ebp - 0x3c]
push ecx
jmp 0x409765
cmp dword [ebp - 0x30a4], 0
je 0x40976d
push str..IA64
push 6
lea edx, [ebp - 0x3c]
push edx
call fcn.0051e2ba
add esp, 0xc
mov ecx, dword [ebx + 0x68]
push 0
push 0
push 0x101
lea eax, [ebp - 0x560]
push eax
push 0
push 0
push 0
push 0
push ecx
call fcn.0051e95e
lea eax, [ebp - 0x560]
add esp, 0x24
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4097a0
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x560]
push edx
lea ecx, [ebp - 0x3780]
call fcn.00401bc0
mov edx, dword [ebp - 0x3780]
push 0x101
lea eax, [ebp - 0xb7c]
push eax
push 0x101
lea ecx, [ebp - 0x560]
push ecx
push 0
push 0
push 0
push 0
push edx
call fcn.0051e95e
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0xb7c]
push ecx
call fcn.0051eced
add esp, 0x2c
push 0
push 0
test eax, eax
jne 0x409823
mov ecx, dword [ebx + 0x68]
push eax
push eax
push 0x105
lea edx, [ebp - 0x76c]
push edx
push 4
lea eax, [ebp - 0x30]
push eax
push ecx
jmp 0x409845
push 0x101
lea edx, [ebp - 0x560]
push edx
mov edx, dword [ebx + 0x68]
push 0x105
lea eax, [ebp - 0x76c]
push eax
push 4
lea ecx, [ebp - 0x30]
push ecx
push edx
call fcn.0051e95e
lea eax, [ebp - 0x30]
add esp, 0x24
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409853
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x3780]
call fcn.00401bc0
lea eax, [ebp - 0x76c]
lea edx, [eax + 2]
jmp 0x409880
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409880
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x76c]
push ecx
lea ecx, [ebp - 0x3780]
call fcn.004049b0
lea eax, [ebp - 0x560]
lea edx, [eax + 2]
jmp 0x4098b0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4098b0
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x560]
push edx
lea ecx, [ebp - 0x3780]
call fcn.004049b0
push 4
push str..ini
lea ecx, [ebp - 0x3780]
call fcn.004049b0
push 0x104
lea eax, [ebp - 0xd88]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x101
lea ecx, [ebp - 0x35c]
push ecx
push 0x105
lea edx, [ebp - 0x978]
push edx
push 0
push 0
push 0
lea eax, [ebp - 0xd88]
push 0
push eax
call fcn.0051e95e
lea esi, [ebx + 0xb8]
lea eax, [ebp - 0x978]
add esp, 0x24
mov dword [ebp - 0x3790], esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409940
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x978]
push ecx
mov ecx, esi
call fcn.00401bc0
lea eax, [ebp - 0x35c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409967
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x35c]
push edx
mov ecx, esi
call fcn.004049b0
mov eax, dword [esi]
push eax
push str.CInitInfoStorage::GetProductName_Default_product_name___1_s_._n
push 2
call fcn.00403750
mov edi, dword [ebp - 0x3780]
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
add esp, 0xc
or ecx, eax
jge 0x4099bf
push 0
lea ecx, [ebp - 0x3780]
call fcn.004015a0
mov edi, dword [ebp - 0x3780]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4099ee
push edi
push 1
add ebx, 0x144
push ebx
call fcn.00405460
push str.CDelDrvApp::GetInitInfo_strIniFile_is_not_found._n
push 2
call fcn.00403750
add esp, 0x14
jmp 0x40afa1
lea eax, [ebp - 0x30]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4099f4
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x30]
push ecx
lea ecx, [ebx + 0xe8]
call fcn.00401bc0
lea eax, [ebp - 0x76c]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409a20
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x76c]
push edx
lea ecx, [ebx + 0xe8]
call fcn.004049b0
mov ecx, dword [edi - 8]
mov eax, 1
sub eax, dword [edi - 4]
or ecx, eax
jge 0x409a64
push 0
lea ecx, [ebp - 0x3780]
call fcn.004015a0
mov edi, dword [ebp - 0x3780]
lea eax, [ebp - 0x50]
push eax
push 0
push edi
lea ecx, [ebp - 0x2e8c]
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 0x40a464
push fcn.00428610
push fcn.00428600
push 3
push 0x18
lea ecx, [ebp - 0x2dd4]
push ecx
call fcn.0051fb1a
lea ecx, [ebp - 0x2e8c]
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 0x409af5
push edi
push edx
push str.LanguageFunction
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
dec eax
je 0x409aec
dec eax
je 0x409ae4
dec eax
je 0x409adc
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
jmp 0x409af2
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
jmp 0x409af2
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLCID]
jmp 0x409af2
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 - 0x2d8c]
push edx
push 0x5450a0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x50]
push ecx
call ebx
lea eax, [ebp - 0x2d8c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409b30
sub eax, edx
sar eax, 1
je 0x409b64
push 0x2c
lea edx, [ebp - 0x2d8c]
push edx
lea ecx, [ebp - 0x2dd4]
call fcn.004289f0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x2dd4]
call fcn.00428d90
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 - 0x2d8c]
push edx
push 0x5450a0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x50]
push ecx
call ebx
lea eax, [ebp - 0x2d8c]
lea edx, [eax + 2]
xor esi, esi
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x409ba4
sub eax, edx
sar eax, 1
je 0x409bd8
push 0x2c
lea edx, [ebp - 0x2d8c]
push edx
lea ecx, [ebp - 0x2dbc]
call fcn.004289f0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x2dbc]
call fcn.00428d90
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 - 0x2d8c]
push edx
push 0x5450a0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x50]
push ecx
call ebx
lea eax, [ebp - 0x2d8c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x409c10
sub eax, edx
sar eax, 1
je 0x409c44
push 0x2c
lea edx, [ebp - 0x2d8c]
push edx
lea ecx, [ebp - 0x2da4]
call fcn.004289f0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x2da4]
call fcn.00428d90
push 0x2002
lea ecx, [ebp - 0x2d8c]
push esi
push ecx
call fcn.0051eb70
add esp, 0xc
push edi
push 0x1001
lea edx, [ebp - 0x2d8c]
push edx
push 0x5450a0
push str.Srv2008_Edition
push 0x54754c
call ebx
lea eax, [ebp - 0x2d8c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x409c80
sub eax, edx
sar eax, 1
je 0x409cc5
lea eax, [ebp - 0x2d8c]
push 0x10
lea ecx, [ebp - 0x378c]
push ecx
mov edx, eax
push edx
mov dword [ebp - 0x378c], eax
call fcn.0051faee
mov ecx, dword [ebp - 0x377c]
add esp, 0xc
mov dword [ecx + 0x138], eax
mov dword [ecx + 0x13c], edx
jmp 0x409cd7
mov eax, dword [ebp - 0x377c]
mov dword [eax + 0x138], esi
mov dword [eax + 0x13c], esi
lea eax, [ebp - 0x2dd4]
mov dword [ebp - 0x378c], esi
mov dword [ebp - 0x3784], eax
lea esp, [esp]
mov esi, dword [ebp - 0x3784]
push 0x20
mov ecx, esi
call fcn.00428040
mov ecx, esi
call fcn.00426dd0
cmp eax, 2
jne 0x40a17e
push str._SELECT_
push 0
mov ecx, esi
call fcn.00427000
push eax
call fcn.0051eced
add esp, 8
test eax, eax
jne 0x40a17e
xor ecx, ecx
cmp cx, word [ebp + 0xc]
je 0x409d55
mov si, word [ebp + 0xc]
movzx edx, si
push edx
push str.CInitInfoStorage::Init_nDefaultLangID__0x_04x_n
push 4
call fcn.00403750
add esp, 0xc
movzx ebx, si
jmp 0x40a069
lea ecx, [ebp - 0x2e08]
call fcn.00428600
xor esi, esi
push esi
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 5
call fcn.00424760
mov eax, 7
xor ecx, ecx
mov dword [ebp - 0x37a4], esi
mov dword [ebp - 0x2e14], eax
mov dword [ebp - 0x2e18], esi
mov word [ebp - 0x2e28], cx
xor edx, edx
mov dword [ebp - 0x2ddc], eax
mov dword [ebp - 0x2de0], esi
mov word [ebp - 0x2df0], dx
lea ecx, [ebp - 0x2e8c]
mov byte [ebp - 4], 8
xor edi, edi
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x409fc2
mov ebx, dword [ebp - 0x377c]
push 0x10
lea eax, [ebp - 0x37a4]
push eax
push edi
lea ecx, [ebp - 0x2e8c]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
call fcn.0051f82d
movzx ecx, ax
add esp, 0xc
push 0x2c
mov dword [ebp - 0x3788], ecx
push edi
lea ecx, [ebp - 0x2e8c]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
push eax
lea ecx, [ebp - 0x2e08]
call fcn.004289f0
lea ecx, [ebp - 0x2e08]
call fcn.00426dd0
cmp eax, 3
jne 0x409fae
mov eax, dword [ebx + 0xe8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x409e3d
push 0
lea ecx, [ebx + 0xe8]
call fcn.004015a0
mov edx, dword [ebx + 0xe8]
mov eax, edx
lea esi, [eax + 2]
jmp 0x409e50
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409e50
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2e28]
call fcn.00401dd0
push 1
lea ecx, [ebp - 0x2e08]
call fcn.00427000
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x409e80
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2e28]
call fcn.004035d0
mov eax, dword [ebx + 0xe8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x409ebe
push 0
lea ecx, [ebx + 0xe8]
call fcn.004015a0
mov edx, dword [ebx + 0xe8]
mov eax, edx
lea esi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x409ed0
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2df0]
call fcn.00401dd0
push 2
lea ecx, [ebp - 0x2e08]
call fcn.00427000
mov ecx, eax
lea esi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x409f00
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2df0]
call fcn.004035d0
cmp dword [ebp - 0x2e18], 0x104
ja 0x40a499
cmp dword [ebp - 0x2de0], 0x104
ja 0x40a499
mov eax, dword [ebp - 0x2e28]
mov esi, 8
cmp dword [ebp - 0x2e14], esi
jae 0x409f55
lea eax, [ebp - 0x2e28]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x409fae
mov eax, dword [ebp - 0x2df0]
cmp dword [ebp - 0x2ddc], esi
jae 0x409f75
lea eax, [ebp - 0x2df0]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x409fae
push 0x20
lea ecx, [ebp - 0x2e08]
call fcn.00428040
push 0
lea ecx, [ebp - 0x2e08]
call fcn.00427000
mov edx, dword [ebp - 0x3788]
push eax
push edx
lea ecx, [ebp - 0x280]
call fcn.00424680
lea ecx, [ebp - 0x2e8c]
inc edi
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp edi, eax
jb 0x409dc6
lea ecx, [ebp - 0x280]
call fcn.0042f305
cmp eax, 2
je 0x40a5e2
lea ecx, [ebp - 0x280]
call fcn.00423e50
mov esi, 8
movzx ebx, ax
cmp dword [ebp - 0x2ddc], esi
jb 0x40a000
mov eax, dword [ebp - 0x2df0]
push eax
call fcn.00429e6f
add esp, 4
xor edi, edi
xor ecx, ecx
mov dword [ebp - 0x2ddc], 7
mov dword [ebp - 0x2de0], edi
mov word [ebp - 0x2df0], cx
cmp dword [ebp - 0x2e14], esi
jb 0x40a032
mov edx, dword [ebp - 0x2e28]
push edx
call fcn.00429e6f
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x2e14], 7
mov dword [ebp - 0x2e18], edi
mov word [ebp - 0x2e28], ax
mov byte [ebp - 4], 5
call fcn.004093f0
lea ecx, [ebp - 0x2e08]
mov byte [ebp - 4], 4
call fcn.00428610
test bx, bx
je 0x40a17e
lea ecx, [ebp - 0x2e8c]
xor esi, esi
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x40a17e
mov edi, dword [sym.imp.USER32.dll_wsprintfW]
lea ecx, [ecx]
push esi
lea ecx, [ebp - 0x2e8c]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
test eax, eax
je 0x40a0cf
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 - 0x2e8c]
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetKey_unsigned_long_int_
push eax
call fcn.0051eced
add esp, 8
test eax, eax
je 0x40a0e4
lea ecx, [ebp - 0x2e8c]
inc esi
call sym.DelDrv.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp esi, eax
jb 0x40a090
jmp 0x40a17e
push str.Kernel32.DLL
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x2c
push esi
lea ecx, [ebp - 0x2e8c]
mov edi, eax
call sym.DelDrv.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
mov esi, dword [ebp - 0x3784]
push eax
mov ecx, esi
call fcn.004289f0
lea ecx, [ebp - 0x1c]
push ecx
mov ecx, esi
call fcn.00428d90
push 0x20
mov ecx, esi
call fcn.00428040
test edi, edi
je 0x40a17e
push str.SetThreadLocale
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x40a17e
mov edx, ebx
and edx, 0xfc00
xor eax, eax
cmp ax, dx
jne 0x40a168
and ebx, 0x3ff
or ebx, 0x400
movzx esi, bx
push esi
push str.CInitInfoStorage::Init_nTempLangID__0x_1_lx__n
push 5
call fcn.00403750
add esp, 0xc
push esi
jmp 0x40a16c
movzx ecx, bx
push ecx
call edi
push eax
push str.CInitInfoStorage::Init_SetThreadLocale_ret_1_d__n
push 5
call fcn.00403750
add esp, 0xc
mov ebx, dword [ebp - 0x3784]
mov ecx, ebx
call fcn.00426dd0
cmp eax, 4
jne 0x40a408
mov eax, 7
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x2ddc], eax
mov dword [ebp - 0x2de0], ecx
mov word [ebp - 0x2df0], dx
mov dword [ebp - 0x2df8], eax
xor eax, eax
mov dword [ebp - 0x2dfc], ecx
mov word [ebp - 0x2e0c], ax
mov edi, dword [ebp - 0x377c]
mov eax, dword [edi + 0xe8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
mov byte [ebp - 4], 0xa
jge 0x40a1f0
push edx
lea ecx, [edi + 0xe8]
call fcn.004015a0
mov esi, dword [edi + 0xe8]
mov eax, esi
lea edx, [eax + 2]
jmp 0x40a200
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40a200
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x2df0]
call fcn.00401dd0
push 1
mov ecx, ebx
call fcn.00427000
mov ecx, eax
lea esi, [ecx + 2]
lea ebx, [ebx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40a230
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2df0]
call fcn.004035d0
mov eax, dword [edi + 0xe8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40a26e
push 0
lea ecx, [edi + 0xe8]
call fcn.004015a0
mov esi, dword [edi + 0xe8]
mov eax, esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40a280
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [ebp - 0x2e0c]
call fcn.00401dd0
push 2
mov ecx, ebx
call fcn.00427000
mov ecx, eax
lea esi, [ecx + 2]
lea ebx, [ebx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40a2b0
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2e0c]
call fcn.004035d0
mov eax, 0x104
cmp dword [ebp - 0x2de0], eax
ja 0x40a8a1
cmp dword [ebp - 0x2dfc], eax
ja 0x40a8a1
mov eax, dword [ebp - 0x2df0]
mov ebx, 8
cmp dword [ebp - 0x2ddc], ebx
jae 0x40a302
lea eax, [ebp - 0x2df0]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push eax
call esi
cmp eax, 0xffffffff
je 0x40a330
mov eax, dword [ebp - 0x2e0c]
cmp dword [ebp - 0x2df8], ebx
jae 0x40a324
lea eax, [ebp - 0x2e0c]
push eax
call esi
cmp eax, 0xffffffff
jne 0x40a688
mov eax, dword [ebp - 0x2df0]
cmp dword [ebp - 0x2ddc], ebx
jae 0x40a344
lea eax, [ebp - 0x2df0]
push eax
call esi
cmp eax, 0xffffffff
je 0x40a36c
mov eax, dword [ebp - 0x2e0c]
cmp dword [ebp - 0x2df8], ebx
jae 0x40a360
lea eax, [ebp - 0x2e0c]
push eax
call esi
cmp eax, 0xffffffff
je 0x40a800
mov eax, dword [ebp - 0x2df0]
cmp dword [ebp - 0x2ddc], ebx
jae 0x40a380
lea eax, [ebp - 0x2df0]
push eax
call esi
cmp eax, 0xffffffff
jne 0x40a3a8
mov eax, dword [ebp - 0x2e0c]
cmp dword [ebp - 0x2df8], ebx
jae 0x40a39c
lea eax, [ebp - 0x2e0c]
push eax
call esi
cmp eax, 0xffffffff
jne 0x40a860
push str.CInitInfoStorage::Init_Resource_DLL_or_StringTable_ini_file_is_not_found._n
push 2
call fcn.00403750
add esp, 8
cmp dword [ebp - 0x2df8], ebx
jb 0x40a3ce
mov ecx, dword [ebp - 0x2e0c]
push ecx
call fcn.00429e6f
add esp, 4
xor edx, edx
mov dword [ebp - 0x2df8], 7
mov dword [ebp - 0x2dfc], 0
mov word [ebp - 0x2e0c], dx
mov byte [ebp - 4], 4
cmp dword [ebp - 0x2ddc], ebx
jb 0x40a417
mov eax, dword [ebp - 0x2df0]
push eax
call fcn.00429e6f
add esp, 4
jmp 0x40a417
mov ecx, ebx
call fcn.00426dd0
test eax, eax
jne 0x40a9ad
mov eax, dword [ebp - 0x378c]
add dword [ebp - 0x3784], 0x18
inc eax
mov dword [ebp - 0x378c], eax
cmp eax, 3
jb 0x409cf0
lea ecx, [ebp - 0x2e8c]
call sym.DelDrv.exe_public:_void___thiscall_CDeviceInfSection::Clear_void_
push fcn.00428610
push 3
push 0x18
lea eax, [ebp - 0x2dd4]
push eax
mov byte [ebp - 4], 3
call fcn.0051f178
mov edi, dword [ebp - 0x3780]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
call fcn.0042cb3b
mov esi, dword [eax + 0xc]
call fcn.0042cb3b
mov eax, dword [eax + 4]
cmp esi, dword [eax + 0x44]
jne 0x40a9f0
mov ecx, dword [ebp - 0x377c]
add ecx, 0x144
push 3
push ecx
call fcn.00405460
add esp, 8
jmp 0x40afa1
push str.CInitInfoStorage::Init_resources_path_is_too_long_1_._n
push 2
call fcn.00403750
push 0xb4
mov edi, 4
lea ecx, [ebx + 0x148]
push edi
push ecx
call fcn.00405170
mov esi, dword [0x5a2050]
add esp, 0x14
lea edx, [ebp - 0x3788]
push edx
lea eax, [ebp - 0x3790]
push eax
lea ecx, [esi + 4]
mov dword [ebp - 0x3788], edi
call fcn.00404940
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40a4ed
mov esi, dword [eax + 0x10]
jmp 0x40a4ef
xor esi, esi
push esi
call fcn.0042a962
test eax, eax
je 0x40a506
push esi
push eax
lea ecx, [ebx + 0x144]
call fcn.00401a80
mov esi, dword [0x5a2050]
lea ecx, [ebp - 0x3788]
push ecx
lea edx, [ebp - 0x3790]
push edx
lea ecx, [esi + 4]
mov dword [ebp - 0x3788], edi
call fcn.00404940
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40a534
mov eax, dword [eax + 0x14]
jmp 0x40a536
xor eax, eax
mov edi, 8
mov dword [ebx + 0x14c], eax
cmp dword [ebp - 0x2ddc], edi
jb 0x40a558
mov eax, dword [ebp - 0x2df0]
push eax
call fcn.00429e6f
add esp, 4
xor esi, esi
xor ecx, ecx
mov ebx, 7
mov dword [ebp - 0x2ddc], ebx
mov dword [ebp - 0x2de0], esi
mov word [ebp - 0x2df0], cx
cmp dword [ebp - 0x2e14], edi
jb 0x40a58b
mov edx, dword [ebp - 0x2e28]
push edx
call fcn.00429e6f
add esp, 4
xor eax, eax
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x2e14], ebx
mov dword [ebp - 0x2e18], esi
mov word [ebp - 0x2e28], ax
mov byte [ebp - 4], 5
call fcn.004093f0
lea ecx, [ebp - 0x2e08]
mov byte [ebp - 4], 4
call fcn.00428610
push fcn.00428610
push 3
push 0x18
lea ecx, [ebp - 0x2dd4]
push ecx
mov byte [ebp - 4], 3
call fcn.0051f178
mov edi, dword [ebp - 0x3780]
jmp 0x40afa1
mov ebx, 8
cmp dword [ebp - 0x2ddc], ebx
jb 0x40a5fe
mov edx, dword [ebp - 0x2df0]
push edx
call fcn.00429e6f
add esp, 4
xor edi, edi
xor eax, eax
mov esi, 7
mov dword [ebp - 0x2ddc], esi
mov dword [ebp - 0x2de0], edi
mov word [ebp - 0x2df0], ax
cmp dword [ebp - 0x2e14], ebx
jb 0x40a631
mov ecx, dword [ebp - 0x2e28]
push ecx
call fcn.00429e6f
add esp, 4
xor edx, edx
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x2e14], esi
mov dword [ebp - 0x2e18], edi
mov word [ebp - 0x2e28], dx
mov byte [ebp - 4], 5
call fcn.004093f0
lea ecx, [ebp - 0x2e08]
mov byte [ebp - 4], 4
call fcn.00428610
push fcn.00428610
push 3
push 0x18
lea eax, [ebp - 0x2dd4]
push eax
mov byte [ebp - 4], 3
call fcn.0051f178
mov edi, dword [ebp - 0x3780]
jmp 0x40afa1
mov eax, dword [ebp - 0x2df0]
mov dword [ebp - 0x3788], 0
cmp dword [ebp - 0x2ddc], ebx
jae 0x40a6a6
lea eax, [ebp - 0x2df0]
add edi, 0xec
push eax
mov ecx, edi
call fcn.00428f40
mov eax, dword [ebp - 0x2e0c]
cmp dword [ebp - 0x2df8], ebx
jae 0x40a6c8
lea eax, [ebp - 0x2e0c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
jne 0x40a726
mov ecx, dword [ebp - 0x377c]
add ecx, 0x144
push 3
push ecx
call fcn.00405460
add esp, 8
lea ecx, [ebp - 0x2e0c]
call fcn.00401880
lea ecx, [ebp - 0x2df0]
call fcn.00401880
push fcn.00428610
push 3
push 0x18
lea edx, [ebp - 0x2dd4]
push edx
mov byte [ebp - 4], 3
call fcn.0051f178
mov edi, dword [ebp - 0x3780]
jmp 0x40afa1
call fcn.0042cb3b
mov dword [eax + 0xc], esi
mov eax, dword [ebp - 0x378c]
lea esi, [eax + eax*2]
push 0x10
lea eax, [ebp - 0x3788]
push eax
lea esi, [ebp + esi*8 - 0x2dd4]
push 3
mov ecx, esi
call fcn.00427000
push eax
call fcn.0051f82d
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.00428850
push 0
mov ecx, esi
call fcn.00427000
push eax
push 0x547280
mov ecx, edi
call fcn.00428850
push 0
mov ecx, esi
call fcn.00427000
push eax
lea ecx, [ebp - 0x3784]
call fcn.004022a0
push 0x54727c
push 0x5453c8
lea ecx, [ebp - 0x3784]
mov byte [ebp - 4], 0xb
call fcn.004045a0
mov ecx, dword [ebp - 0x3784]
push ecx
push str.__SELECTEDLANGDIR__
mov ecx, edi
call fcn.00428850
lea ecx, [ebp - 0x3784]
call fcn.00401510
lea ecx, [ebp - 0x2e0c]
call fcn.00401880
lea ecx, [ebp - 0x2df0]
mov byte [ebp - 4], 4
call fcn.00401880
jmp 0x40a434
mov eax, dword [ebp - 0x2e0c]
cmp dword [ebp - 0x2df8], ebx
jae 0x40a814
lea eax, [ebp - 0x2e0c]
push eax
push 1
add edi, 0x144
push edi
call fcn.00405460
add esp, 0xc
lea ecx, [ebp - 0x2e0c]
call fcn.00401880
lea ecx, [ebp - 0x2df0]
call fcn.00401880
push fcn.00428610
push 3
push 0x18
lea edx, [ebp - 0x2dd4]
push edx
mov byte [ebp - 4], 3
call fcn.0051f178
mov edi, dword [ebp - 0x3780]
jmp 0x40afa1
mov eax, dword [ebp - 0x2df0]
cmp dword [ebp - 0x2ddc], ebx
jae 0x40a874
lea eax, [ebp - 0x2df0]
push eax
push 1
add edi, 0x144
push edi
call fcn.00405460
add esp, 0xc
lea ecx, [ebp - 0x2e0c]
call fcn.00401880
lea ecx, [ebp - 0x2df0]
call fcn.00401880
jmp 0x40a664
push str.CInitInfoStorage::Init_resources_path_is_too_long_1_._n
push 2
call fcn.00403750
push 0xb4
mov ebx, 4
lea ecx, [edi + 0x148]
push ebx
push ecx
call fcn.00405170
mov esi, dword [0x5a2050]
add esp, 0x14
lea edx, [ebp - 0x3788]
push edx
lea eax, [ebp - 0x3790]
push eax
lea ecx, [esi + 4]
mov dword [ebp - 0x3788], ebx
call fcn.00404940
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40a8f5
mov esi, dword [eax + 0x10]
jmp 0x40a8f7
xor esi, esi
push esi
call fcn.0042a962
test eax, eax
je 0x40a90e
push esi
push eax
lea ecx, [edi + 0x144]
call fcn.00401a80
mov esi, dword [0x5a2050]
lea ecx, [ebp - 0x3788]
push ecx
lea edx, [ebp - 0x3790]
push edx
lea ecx, [esi + 4]
mov dword [ebp - 0x3788], ebx
call fcn.00404940
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40a93c
mov eax, dword [eax + 0x14]
jmp 0x40a93e
xor eax, eax
mov esi, 8
mov dword [edi + 0x14c], eax
cmp dword [ebp - 0x2df8], esi
jb 0x40a960
mov eax, dword [ebp - 0x2e0c]
push eax
call fcn.00429e6f
add esp, 4
xor ebx, ebx
xor ecx, ecx
mov edi, 7
mov dword [ebp - 0x2df8], edi
mov dword [ebp - 0x2dfc], ebx
mov word [ebp - 0x2e0c], cx
cmp dword [ebp - 0x2ddc], esi
jb 0x40a993
mov edx, dword [ebp - 0x2df0]
push edx
call fcn.00429e6f
add esp, 4
xor eax, eax
mov dword [ebp - 0x2ddc], edi
mov dword [ebp - 0x2de0], ebx
mov word [ebp - 0x2df0], ax
jmp 0x40a5be
mov ecx, dword [ebp - 0x377c]
lea edx, [ebp - 0x1c]
push edx
lea eax, [ebp - 0x50]
push eax
add ecx, 0x144
push 2
push ecx
call fcn.00405460
add esp, 0x10
push fcn.00428610
push 3
push 0x18
lea edx, [ebp - 0x2dd4]
push edx
mov byte [ebp - 4], 3
call fcn.0051f178
mov edi, dword [ebp - 0x3780]
jmp 0x40afa1
mov esi, dword [ebp - 0x377c]
mov edx, dword [esi + 0xbc]
lea eax, [esi + 0xbc]
push edx
push str.CDelDrvApp::GetInitInfo_GUID_1_s_._n
push 5
mov dword [ebp - 0x378c], eax
call fcn.00403750
mov eax, dword [ebp - 0x378c]
mov ecx, dword [eax]
add esp, 0xc
cmp dword [ecx - 0xc], 0
jne 0x40ab37
xor edx, edx
mov dword [ebp - 0x2e14], 7
mov dword [ebp - 0x2e18], 0
mov word [ebp - 0x2e28], dx
push str.CDelDrvApp::GetInitInfo_use_GUID_from_ini_file._n
push 5
mov byte [ebp - 4], 0xc
call fcn.00403750
add esp, 8
push edi
push 0x104
lea eax, [ebp - 0x2d8c]
push eax
push 0x5450a0
lea ecx, [ebp - 0x5c]
push ecx
lea edx, [ebp - 0x28]
push edx
call ebx
lea eax, [ebp - 0x2d8c]
push eax
lea ecx, [esi + 0xec]
call fcn.00427860
mov ecx, eax
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40aa90
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x2e28]
call fcn.00401dd0
cmp dword [ebp - 0x2e18], 0x26
mov ebx, 8
jne 0x40ab1c
mov eax, dword [ebp - 0x2e28]
cmp dword [ebp - 0x2e14], ebx
jae 0x40aace
lea eax, [ebp - 0x2e28]
push eax
push str.CDelDrvApp::GetInitInfo_GUID_1_s_._n
push 5
call fcn.00403750
mov edx, dword [ebp - 0x2e28]
add esp, 0xc
cmp dword [ebp - 0x2e14], ebx
jae 0x40aaf2
lea edx, [ebp - 0x2e28]
test edx, edx
jne 0x40aafa
xor eax, eax
jmp 0x40ab0f
mov eax, edx
lea esi, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ab00
sub eax, esi
sar eax, 1
mov ecx, dword [ebp - 0x378c]
push eax
push edx
call fcn.00401bc0
mov byte [ebp - 4], 3
cmp dword [ebp - 0x2e14], ebx
jb 0x40ab37
mov ecx, dword [ebp - 0x2e28]
push ecx
call fcn.00429e6f
add esp, 4
mov esi, dword [ebp - 0x377c]
mov edx, dword [esi + 0xc0]
cmp dword [edx - 0xc], 0
lea ebx, [esi + 0xc0]
jne 0x40abd6
push edi
push 0x104
lea eax, [ebp - 0x2d8c]
push eax
push 0x5450a0
lea ecx, [ebp - 0x74]
push ecx
lea edx, [ebp - 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x2d8c]
push eax
lea ecx, [esi + 0xec]
call fcn.00427860
test eax, eax
jne 0x40ab8d
xor ecx, ecx
jmp 0x40aba7
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40ab92
sub ecx, esi
mov esi, dword [ebp - 0x377c]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.00401bc0
mov ecx, dword [ebx]
cmp dword [ecx - 0xc], 0
jne 0x40abd6
lea edx, [ebp - 0x74]
push edx
lea eax, [ebp - 0x28]
push eax
push 2
add esi, 0x144
push esi
call fcn.00405460
add esp, 0x10
jmp 0x40afa1
mov eax, dword [ebx]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40abf0
push 0
mov ecx, ebx
call fcn.004015a0
mov eax, dword [ebx]
push eax
push str.CDelDrvApp::GetInitInfo_DeviceName_1_s_._n
push 5
call fcn.00403750
mov esi, dword [ebp - 0x377c]
mov ecx, dword [esi + 0xc4]
add esi, 0xc4
add esp, 0xc
cmp dword [ecx - 0xc], 0
jne 0x40ac7e
push edi
push 0x104
lea edx, [ebp - 0x2d8c]
push edx
push 0x5450a0
lea eax, [ebp - 0xa8]
push eax
lea ecx, [ebp - 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x2d8c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ac46
sub eax, edx
sar eax, 1
je 0x40ac7e
mov ecx, dword [ebp - 0x377c]
lea edx, [ebp - 0x2d8c]
push edx
add ecx, 0xec
call fcn.00427860
push eax
push str.MF_Drivers__s
push esi
call fcn.00404ae0
add esp, 0xc
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40ac98
push 0
mov ecx, esi
call fcn.004015a0
mov esi, dword [esi]
push esi
push str.CDelDrvApp::GetInitInfo_DIASUser_1_s_._n
push 5
call fcn.00403750
add esp, 0xc
push edi
push 0x104
lea eax, [ebp - 0x2d8c]
push eax
push 0x5450a0
lea ecx, [ebp - 0x8c]
push ecx
lea edx, [ebp - 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov esi, dword [ebp - 0x377c]
lea eax, [ebp - 0x2d8c]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ace0
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x2d8c]
push eax
lea ecx, [esi + 0xc8]
call fcn.00401bc0
mov ecx, dword [esi + 0xc8]
cmp dword [ecx - 0xc], 0
jne 0x40ad31
lea edx, [ebp - 0x8c]
push edx
lea eax, [ebp - 0x28]
push eax
mov ecx, esi
add ecx, 0x144
push 2
push ecx
call fcn.00405460
add esp, 0x10
jmp 0x40afa1
mov eax, ecx
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40ad4f
push 0
lea ecx, [esi + 0xc8]
call fcn.004015a0
mov esi, dword [esi + 0xc8]
push esi
push str.CDelDrvApp::GetInitInfo_CommandLine_1_s_._n
push 5
call fcn.00403750
add esp, 0xc
lea ecx, [ebp - 0x37a0]
call fcn.004057b0
push 0
lea edx, [ebp - 0xd8]
push str.DRIVER_d
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [ebp - 0x378c], 1
mov eax, dword [ebx]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40adab
push 0
mov ecx, ebx
call fcn.004015a0
mov eax, dword [ebx]
push edi
push 0x104
lea ecx, [ebp - 0x2d8c]
push ecx
push 0x5450a0
lea edx, [ebp - 0xd8]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
test eax, eax
je 0x40af25
lea ecx, [ebp - 0x2e08]
call fcn.00428600
push 0x2c
lea eax, [ebp - 0x2d8c]
push eax
lea ecx, [ebp - 0x2e08]
mov byte [ebp - 4], 0xd
call fcn.004289f0
push 0x20
lea ecx, [ebp - 0x2e08]
call fcn.00428040
lea ecx, [ebp - 0x2e08]
call fcn.00426dd0
cmp eax, 2
jb 0x40aeee
push 0x208
lea ecx, [ebp - 0x3778]
push 0
push ecx
call fcn.0051eb70
push 0x410
lea edx, [ebp - 0x3570]
push 0
push edx
call fcn.0051eb70
mov esi, dword [ebp - 0x377c]
add esp, 0x18
push 0
lea ecx, [ebp - 0x2e08]
add esi, 0xec
call fcn.00427000
push eax
mov ecx, esi
call fcn.00427860
push eax
lea eax, [ebp - 0x3778]
push 0x410
push eax
call fcn.0051e2ba
add esp, 0xc
push 1
lea ecx, [ebp - 0x2e08]
call fcn.00427000
push eax
mov ecx, esi
call fcn.00427860
push eax
lea ecx, [ebp - 0x3570]
push 0x410
push ecx
call fcn.0051e2ba
add esp, 0xc
lea ecx, [ebp - 0x2e08]
call fcn.00426dd0
cmp eax, 3
jb 0x40aedc
push 2
lea ecx, [ebp - 0x2e08]
call fcn.00427000
push eax
mov ecx, esi
call fcn.00427860
push eax
lea edx, [ebp - 0x3368]
push 0x410
push edx
call fcn.0051e2ba
add esp, 0xc
lea eax, [ebp - 0x3778]
push eax
lea ecx, [ebp - 0x37a0]
call fcn.004064e0
mov esi, dword [ebp - 0x378c]
push esi
lea ecx, [ebp - 0xd8]
push str.DRIVER_d
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
inc esi
add esp, 0xc
lea ecx, [ebp - 0x2e08]
mov dword [ebp - 0x378c], esi
mov byte [ebp - 4], 3
call fcn.00428610
jmp 0x40ad91
mov ecx, dword [ebp - 0x379c]
mov esi, dword [ebp - 0x37a0]
sub ecx, esi
mov eax, 0xa80a80a9
imul ecx
add edx, ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x40afe9
push str.CDelDrvApp::GetInitInfo__m_vecDriverInfo.size__0_TRUE__n
push 5
call fcn.00403750
mov eax, dword [ebx]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
add esp, 8
or eax, ecx
jge 0x40af75
push 0
mov ecx, ebx
call fcn.004015a0
mov ebx, dword [ebx]
mov ecx, dword [ebp - 0x377c]
push 0x5450a0
push ebx
add ecx, 0x144
push 2
push ecx
call fcn.00405460
add esp, 0x10
test esi, esi
je 0x40afa1
push esi
call fcn.00429e6f
add esp, 4
lea ecx, [ebp - 0x2e8c]
mov byte [ebp - 4], 1
call sym.DelDrv.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x3160]
mov byte [ebp - 4], 0
call fcn.00429500
add edi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x40afe2
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
xor eax, eax
jmp 0x40b229
mov eax, dword [ebx]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40b003
push 0
mov ecx, ebx
call fcn.004015a0
mov ebx, dword [ebx]
push edi
push 0x104
lea ecx, [ebp - 0x2d8c]
push ecx
push 0x5450a0
lea edx, [ebp - 0x98]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov esi, dword [ebp - 0x377c]
lea eax, [ebp - 0x2d8c]
lea ebx, [esi + 0xec]
push eax
mov ecx, ebx
call fcn.00427860
push eax
lea ecx, [esi + 0xcc]
call fcn.004020d0
sub esp, 0x10
lea edx, [ebp - 0x37a0]
mov ecx, esp
mov dword [ebp - 0x3788], esp
push edx
call fcn.004056d0
push edi
lea eax, [ebp - 0x124]
push eax
mov ecx, esi
call fcn.00406980
test eax, eax
jne 0x40b09b
sub esp, 0x10
lea edx, [ebp - 0x37a0]
mov ecx, esp
mov dword [ebp - 0x3788], esp
push edx
call fcn.004056d0
push edi
lea eax, [ebp - 0x158]
push eax
mov ecx, esi
call fcn.00406980
mov ecx, dword [esi + 0xd4]
sub ecx, dword [esi + 0xd0]
mov eax, 0x14f38f63
imul ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x40b0c9
push str.CDelDrvApp::GetInitInfo__m_vecUninstInfo.size__0_TRUE__n
push 5
call fcn.00403750
add esp, 8
push edi
push 0x104
lea edx, [ebp - 0x2d8c]
push edx
push 0x5450a0
lea eax, [ebp - 0xb8]
push eax
lea ecx, [ebp - 0xf4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [ebp - 0x2d8c]
push edx
mov ecx, ebx
call fcn.00427860
push eax
lea ecx, [esi + 0xe0]
call fcn.004020d0
mov eax, dword [esi + 0xe0]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40b12b
push 0
lea ecx, [esi + 0xe0]
call fcn.004015a0
mov esi, dword [esi + 0xe0]
push esi
push str.CDelDrvApp::GetInitInfo_SetEventPath_1_s_._n
push 5
call fcn.00403750
add esp, 0xc
push edi
push 0x104
lea eax, [ebp - 0x2d8c]
push eax
push 0x5450a0
lea ecx, [ebp - 0xc8]
push ecx
lea edx, [ebp - 0xf4]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov esi, dword [ebp - 0x377c]
lea eax, [ebp - 0x2d8c]
push eax
lea ecx, [esi + 0xe4]
call fcn.004020d0
mov eax, dword [esi + 0xe4]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40b1a1
push 0
lea ecx, [esi + 0xe4]
call fcn.004015a0
mov esi, dword [esi + 0xe4]
push esi
push str.CDelDrvApp::GetInitInfo_SetEventCmdLine_1_s_._n
push 5
call fcn.00403750
add esp, 0xc
push 0x64
call fcn.0042a962
test eax, eax
je 0x40b1d0
mov ecx, dword [ebp - 0x3790]
push 0x64
push eax
call fcn.00401a80
mov eax, dword [ebp - 0x37a0]
test eax, eax
je 0x40b1e3
push eax
call fcn.00429e6f
add esp, 4
lea ecx, [ebp - 0x2e8c]
mov byte [ebp - 4], 1
call sym.DelDrv.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
lea ecx, [ebp - 0x3160]
mov byte [ebp - 4], 0
call fcn.00429500
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 0x40b224
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.0051e701
mov esp, ebp
pop ebp
ret 8