Function at 0x40b250
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x535243
mov eax, dword fs:[0]
push eax
sub esp, 0x938
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
push str.deldrv.debug.ini
xor ebx, ebx
push ebx
push str.DebugLevel
mov edi, ecx
push str.Setup
mov dword [ebp - 0x510], edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, eax
cmp esi, ebx
je 0x40b2f5
push str.deldrv.debug.ini
push 0x100
lea eax, [ebp - 0x210]
push eax
push 0x5450a0
push str.Class
push str.Setup
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push ebx
lea ecx, [ebp - 0x210]
push ecx
call dword [sym.imp.USER32.dll_FindWindowW]
cmp eax, ebx
je 0x40b2e7
lea edx, [ebp - 0x210]
push edx
push 2
jmp 0x40b2ea
push ebx
push 1
push 1
push esi
call fcn.004035b0
add esp, 0x10
push ebx
push ebx
lea ecx, [ebp - 0x944]
call fcn.0040c9a0
mov ecx, edi
mov dword [ebp - 4], ebx
mov dword [ebp - 0x514], ebx
mov dword [ebp - 0x50c], 0xc
mov byte [ebp - 0x4fd], 0
mov dword [edi + 0x120], 0xffffffff
call fcn.00406080
test eax, eax
jne 0x40b966
cmp dword [0x5ad9b8], 1
jle 0x40b5b3
mov dword [ebp - 0x4f8], 4
mov dword [ebp - 0x4fc], 2
jmp 0x40b360
mov eax, dword [0x5ad9c0]
mov ecx, dword [ebp - 0x4f8]
mov ebx, dword [ecx + eax]
movzx eax, word [ebx]
mov dword [ebp - 0x504], ebx
cmp eax, 0x2f
je 0x40b385
cmp eax, 0x2d
jne 0x40b592
push 2
lea eax, [ebx + 2]
push 0x547e1c
push eax
call fcn.0051fc64
add esp, 0xc
test eax, eax
jne 0x40b3fe
cmp word [ebx + 6], ax
lea esi, [ebx + 6]
je 0x40b3fe
lea ecx, [ebp - 0x530]
call fcn.00428600
push 0x2c
push esi
lea ecx, [ebp - 0x530]
mov byte [ebp - 4], 1
mov dword [ebp - 0x518], 0
call fcn.004289f0
lea ecx, [ebp - 0x530]
call fcn.00426dd0
cmp eax, 5
je 0x40b640
push str.CDelDrvApp::InitInstance_Suicide_parameter_invalid__n
push 2
call fcn.00403750
add esp, 8
lea ecx, [ebp - 0x530]
mov byte [ebp - 4], 0
call fcn.00428610
push 2
lea eax, [ebx + 2]
push 0x547da8
push eax
call fcn.0051fc64
add esp, 0xc
test eax, eax
jne 0x40b443
cmp word [ebx + 6], ax
lea esi, [ebx + 6]
je 0x40b443
test esi, esi
je 0x40b436
mov eax, esi
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x40b427
sub eax, ecx
sar eax, 1
push eax
push esi
lea ecx, [edi + 0xbc]
call fcn.00401bc0
push 2
lea eax, [ebx + 2]
push 0x547da0
push eax
call fcn.0051fc64
add esp, 0xc
test eax, eax
jne 0x40b4bc
mov edx, dword [ebp - 0x4fc]
cmp edx, dword [0x5ad9b8]
jge 0x40b4bc
mov eax, dword [0x5ad9c0]
mov ecx, dword [ebp - 0x4f8]
mov edx, dword [ecx + eax + 4]
test edx, edx
jne 0x40b47f
xor eax, eax
jmp 0x40b499
mov eax, edx
lea ebx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40b484
sub eax, ebx
mov ebx, dword [ebp - 0x504]
sar eax, 1
push eax
push edx
lea ecx, [edi + 0xc0]
call fcn.00401bc0
mov edx, dword [edi + 0xc0]
push edx
push 0x547d7c
push 5
call fcn.00403750
add esp, 0xc
push 1
push 0x547d78
lea esi, [ebx + 2]
push esi
call fcn.0051fc64
add esp, 0xc
test eax, eax
jne 0x40b523
mov eax, dword [ebp - 0x4fc]
cmp eax, dword [0x5ad9b8]
jge 0x40b523
mov ecx, dword [0x5ad9c0]
mov edx, dword [ebp - 0x4f8]
mov eax, dword [edx + ecx + 4]
push eax
push 0x547d58
push 5
call fcn.00403750
mov ecx, dword [0x5ad9c0]
mov edx, dword [ebp - 0x4f8]
mov eax, dword [edx + ecx + 4]
push eax
lea ecx, [edi + 0xc4]
push str.MF_Drivers__s
push ecx
call fcn.00404ae0
add esp, 0x18
push 3
push 0x547d50
push esi
call fcn.0051fc64
add esp, 0xc
test eax, eax
jne 0x40b55a
push 0x10
lea edx, [ebp - 0x504]
push edx
add ebx, 8
push ebx
mov dword [ebp - 0x504], eax
call fcn.0051f82d
movzx eax, ax
mov dword [ebp - 0x514], eax
jmp 0x40b58f
push 1
push 0x547d4c
push esi
call fcn.0051fc64
add esp, 0xc
test eax, eax
jne 0x40b592
push 0xa
lea ecx, [ebp - 0x504]
push ecx
add ebx, 4
push ebx
mov dword [ebp - 0x504], eax
call fcn.0051f82d
movzx edx, ax
mov dword [ebp - 0x514], edx
add esp, 0xc
mov eax, dword [ebp - 0x4fc]
add dword [ebp - 0x4f8], 4
inc eax
mov dword [ebp - 0x4fc], eax
dec eax
cmp eax, dword [0x5ad9b8]
jl 0x40b360
mov eax, dword [ebp - 0x514]
push 0
push eax
mov ecx, edi
call fcn.004094d0
test eax, eax
jne 0x40b7d8
mov ecx, dword [edi + 0x148]
cmp dword [ecx - 0xc], eax
je 0x40b966
mov eax, dword [edi + 0x144]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40b5fc
push 0
lea ecx, [edi + 0x144]
call fcn.004015a0
mov eax, dword [edi + 0x148]
mov esi, dword [edi + 0x144]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40b624
push 0
lea ecx, [edi + 0x148]
call fcn.004015a0
mov edx, dword [edi + 0x14c]
mov ebx, dword [edi + 0x148]
push edx
push esi
push ebx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40b966
push 0xa
lea eax, [ebp - 0x518]
push eax
push 0
lea ecx, [ebp - 0x530]
call fcn.00427000
push eax
call fcn.0051f82d
add esp, 0xc
push 1
lea ecx, [ebp - 0x530]
mov dword [edi + 0x12c], eax
call fcn.00427000
test eax, eax
jne 0x40b67a
xor ecx, ecx
jmp 0x40b68f
mov ecx, eax
lea esi, [ecx + 2]
nop
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40b680
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [edi + 0x130]
call fcn.00401bc0
push 2
lea ecx, [ebp - 0x530]
call fcn.00427000
test eax, eax
jne 0x40b6b1
xor ecx, ecx
jmp 0x40b6c5
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40b6b6
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea ecx, [edi + 0xbc]
call fcn.00401bc0
push 3
lea ecx, [ebp - 0x530]
call fcn.00427000
test eax, eax
jne 0x40b6e7
xor ecx, ecx
jmp 0x40b705
mov ecx, eax
lea edx, [ecx + 2]
mov dword [ebp - 0x504], edx
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40b6f2
sub ecx, dword [ebp - 0x504]
sar ecx, 1
push ecx
push eax
lea ecx, [edi + 0xc0]
call fcn.00401bc0
push 0xa
lea eax, [ebp - 0x518]
push eax
push 4
lea ecx, [ebp - 0x530]
call fcn.00427000
push eax
call fcn.0051f82d
mov ecx, dword [edi + 0x12c]
push ecx
push str.CDelDrvApp::InitInstance_Suicide_m_SuicidePid__0x_1_lx__n
push 4
mov dword [edi + 0x124], eax
call fcn.00403750
mov edx, dword [edi + 0x130]
push edx
push str.CDelDrvApp::InitInstance_Suicide_m_SuicideFile___1_n
push 4
call fcn.00403750
mov eax, dword [edi + 0xbc]
push eax
push str.CDelDrvApp::InitInstance_Suicide_m_strUninstallerGUID___1_n
push 4
call fcn.00403750
mov ecx, dword [edi + 0xc0]
push ecx
push str.CDelDrvApp::InitInstance_Suicide_m_strDeviceName___1_n
push 4
call fcn.00403750
mov edx, dword [edi + 0x124]
push edx
push str.CDelDrvApp::InitInstance_Suicide_m_bRestart__0x_1_d__n
push 4
call fcn.00403750
add esp, 0x48
mov ecx, edi
call fcn.00408ad0
cmp dword [edi + 0x124], 0
je 0x40b7ba
push str.CDelDrvApp::InitInstance_Suicide_Restart_Windows..._n
push 5
call fcn.00403750
add esp, 8
call fcn.0040eea0
lea ecx, [ebp - 0x530]
mov dword [edi + 0x120], 0
mov byte [ebp - 4], 0
call fcn.00428610
jmp 0x40bf93
mov ecx, edi
mov byte [ebp - 0x4fd], 1
call fcn.00404d90
test eax, eax
jne 0x40b7f5
mov byte [ebp - 0x4fd], al
jmp 0x40b966
call fcn.0042cb3b
mov eax, dword [eax + 0xc]
mov esi, dword [sym.imp.USER32.dll_GetClassInfoW]
lea ecx, [ebp - 0x540]
push ecx
push str.__MFP_DelDrv__
push eax
call esi
test eax, eax
jne 0x40b844
call fcn.0042cb3b
mov eax, dword [eax + 0xc]
lea edx, [ebp - 0x540]
push edx
push str.32770
push eax
call esi
lea eax, [ebp - 0x540]
push eax
mov dword [ebp - 0x51c], str.__MFP_DelDrv__
call dword [sym.imp.USER32.dll_RegisterClassW]
push str.deldrv.debug.ini
push 0
push str.MessageBoxDebug
push str.Setup
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
je 0x40b898
mov eax, dword [edi + 0xb8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x40b881
push 0
lea ecx, [edi + 0xb8]
call fcn.004015a0
mov esi, dword [edi + 0xb8]
mov ecx, dword [0x5a2050]
push esi
call fcn.00404b60
jmp 0x40b966
push 0x208
lea ecx, [ebp - 0x4f4]
push 0
push ecx
call fcn.0051eb70
add esp, 0xc
push str.deldrv.debug.ini
push 0x104
lea edx, [ebp - 0x4f4]
push edx
push 0x547a44
push str.ShowMsgDlg
push str.Debug_Info
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, 0x547a0c
lea eax, [ebp - 0x4f4]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40b906
test dx, dx
je 0x40b902
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40b906
add eax, 4
add ecx, 4
test dx, dx
jne 0x40b8e0
xor eax, eax
jmp 0x40b90b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40b93b
push eax
lea ecx, [ebp - 0x2ec]
call fcn.004218d0
lea ecx, [ebp - 0x2ec]
mov byte [ebp - 4], 2
call fcn.0042f305
lea ecx, [ebp - 0x2ec]
mov byte [ebp - 4], 0
call fcn.00421770
jmp 0x40b966
lea ecx, [ebp - 0x944]
call fcn.0040c530
mov dword [ebp - 0x50c], eax
mov eax, dword [ebp - 0x894]
push eax
push str.m_nExitCode___d_n
mov dword [edi + 0x120], eax
call fcn.0040efc0
add esp, 8
mov eax, dword [ebp - 0x50c]
xor ebx, ebx
dec eax
je 0x40b984
dec eax
je 0x40b97d
sub eax, 0xa
jne 0x40bce2
xor ebx, ebx
jmp 0x40bce2
lea ecx, [ebp - 0x508]
call fcn.004230e0
mov byte [ebp - 4], 3
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40b9ad
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 - 0x4f8], eax
push 0x33
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
lea ecx, [ebp - 0x4f8]
mov byte [ebp - 4], 4
call fcn.00401bc0
push 1
push 0x5457b4
lea ecx, [ebp - 0x4f8]
call fcn.004049b0
mov eax, dword [edi + 0xbc]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x4f8]
call fcn.004049b0
mov ecx, dword [edi + 0xbc]
cmp dword [ecx - 0xc], 0
mov esi, dword [ebp - 0x4f8]
je 0x40ba4d
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x40ba31
push 0
lea ecx, [ebp - 0x4f8]
call fcn.004015a0
mov esi, dword [ebp - 0x4f8]
push esi
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x508]
call fcn.004230f0
test eax, eax
je 0x40ba4d
mov ebx, 1
jmp 0x40ba4f
xor ebx, ebx
cmp dword [ebp - 0x88c], 0
je 0x40ba5f
mov ebx, 1
jmp 0x40ba7c
cmp dword [edi + 0x120], 0xfffffffe
je 0x40ba6f
mov ebx, 7
jmp 0x40ba7c
neg ebx
sbb ebx, ebx
and ebx, 0xf3
add ebx, 0xc
lea eax, [esi - 0x10]
mov byte [ebp - 4], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40ba9c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x508]
mov byte [ebp - 4], 0
call fcn.00423680
cmp ebx, 0xff
jne 0x40bce2
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40bad1
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 - 0x4f8], eax
mov byte [ebp - 4], 5
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40bb01
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 - 0x4fc], eax
mov ebx, 0x1389
push ebx
mov byte [ebp - 4], 6
call fcn.0042a962
test eax, eax
je 0x40bb33
push ebx
push eax
lea ecx, [ebp - 0x4fc]
call fcn.00401a80
mov edi, dword [ebp - 0x510]
mov eax, dword [edi + 0xb8]
push eax
push 0x5450f4
lea ecx, [ebp - 0x4fc]
call fcn.004045a0
mov edx, dword [0x5a2050]
mov ecx, dword [edx + 8]
mov eax, dword [ecx + 4]
cmp byte [eax + 0x19], 0
jne 0x40bb76
cmp dword [eax + 0xc], ebx
jae 0x40bb6c
mov eax, dword [eax + 8]
jmp 0x40bb70
mov ecx, eax
mov eax, dword [eax]
cmp byte [eax + 0x19], 0
je 0x40bb62
mov eax, dword [edx + 8]
mov dword [ebp - 0x504], ecx
cmp ecx, eax
je 0x40bb90
cmp dword [ecx + 0xc], ebx
ja 0x40bb90
lea eax, [ebp - 0x504]
jmp 0x40bb9c
mov dword [ebp - 0x50c], eax
lea eax, [ebp - 0x50c]
mov eax, dword [eax]
cmp eax, dword [edx + 8]
je 0x40bba8
mov esi, dword [eax + 0x10]
jmp 0x40bbaa
xor esi, esi
push esi
call fcn.0042a962
test eax, eax
je 0x40bbc1
push esi
push eax
lea ecx, [ebp - 0x4f8]
call fcn.00401a80
mov eax, dword [edi + 0xb8]
push eax
push 0x5450f4
lea ecx, [ebp - 0x4f8]
call fcn.004045a0
mov edx, dword [0x5a2050]
mov ecx, dword [edx + 8]
mov eax, dword [ecx + 4]
cmp byte [eax + 0x19], 0
jne 0x40bc04
lea ebx, [ebx]
cmp dword [eax + 0xc], ebx
jae 0x40bbfa
mov eax, dword [eax + 8]
jmp 0x40bbfe
mov ecx, eax
mov eax, dword [eax]
cmp byte [eax + 0x19], 0
je 0x40bbf0
mov eax, dword [edx + 8]
mov dword [ebp - 0x504], ecx
cmp ecx, eax
je 0x40bc1e
cmp dword [ecx + 0xc], ebx
ja 0x40bc1e
lea eax, [ebp - 0x504]
jmp 0x40bc2a
mov dword [ebp - 0x50c], eax
lea eax, [ebp - 0x50c]
mov eax, dword [eax]
cmp eax, dword [edx + 8]
je 0x40bc36
mov ebx, dword [eax + 0x14]
jmp 0x40bc38
xor ebx, ebx
mov edi, dword [ebp - 0x4f8]
mov eax, 1
sub eax, dword [edi - 4]
or eax, dword [edi - 8]
jge 0x40bc5e
push 0
lea ecx, [ebp - 0x4f8]
call fcn.004015a0
mov edi, dword [ebp - 0x4f8]
mov esi, dword [ebp - 0x4fc]
mov eax, 1
sub eax, dword [esi - 4]
or eax, dword [esi - 8]
jge 0x40bc84
push 0
lea ecx, [ebp - 0x4fc]
call fcn.004015a0
mov esi, dword [ebp - 0x4fc]
push ebx
push edi
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 1
je 0x40bc9d
cmp eax, 6
je 0x40bc9d
xor ebx, ebx
jmp 0x40bca2
mov ebx, 7
lea eax, [esi - 0x10]
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bcc2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bce2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
push str.CDelDrvApp::InitInstance_action__0x_1_lx__n
push 5
call fcn.00403750
mov ecx, ebx
and ecx, 1
push ecx
push str.CDelDrvApp::InitInstance___Complete______1_d__n
push 5
call fcn.00403750
mov edx, ebx
and edx, 2
push edx
push str.CDelDrvApp::InitInstance___DelAll________1_d__n
push 5
call fcn.00403750
mov eax, ebx
and eax, 4
push eax
push str.CDelDrvApp::InitInstance___DelAllInf_____1_d__n
push 5
call fcn.00403750
mov ecx, ebx
and ecx, 8
push ecx
push str.CDelDrvApp::InitInstance___NoDevMsg______1_d__n
push 5
call fcn.00403750
mov edx, dword [ebp - 0x510]
mov al, bl
shr ebx, 1
not bl
add esp, 0x3c
and al, 1
and ebx, 1
cmp byte [ebp - 0x4fd], 0
mov dword [edx + 0x140], ebx
je 0x40bf93
test al, al
je 0x40bf7f
push str.deldrv.debug.ini
push 0
push str.AlwaysReboot
push str.Setup
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp dword [ebp - 0x890], 0
jne 0x40bd8e
test eax, eax
je 0x40bf7f
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40bda8
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 - 0x4fc], eax
mov byte [ebp - 4], 7
call fcn.0042aa6c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40bdd8
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 - 0x4f8], eax
mov ebx, 0xfac
push ebx
mov byte [ebp - 4], 8
call fcn.0042a962
test eax, eax
je 0x40be0a
push ebx
push eax
lea ecx, [ebp - 0x4f8]
call fcn.00401a80
mov edi, dword [ebp - 0x510]
mov eax, dword [edi + 0xb8]
push eax
push 0x5450f4
lea ecx, [ebp - 0x4f8]
call fcn.004045a0
mov esi, dword [0x5a2050]
lea ecx, [ebp - 0x504]
push ecx
lea edx, [ebp - 0x50c]
push edx
lea ecx, [esi + 4]
mov dword [ebp - 0x504], ebx
call fcn.00404940
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40be55
mov esi, dword [eax + 0x10]
jmp 0x40be57
xor esi, esi
push esi
call fcn.0042a962
test eax, eax
je 0x40be6e
push esi
push eax
lea ecx, [ebp - 0x4fc]
call fcn.00401a80
mov eax, dword [edi + 0xb8]
push eax
push 0x5450f4
lea ecx, [ebp - 0x4fc]
call fcn.004045a0
mov esi, dword [0x5a2050]
lea eax, [ebp - 0x504]
push eax
lea ecx, [ebp - 0x50c]
push ecx
lea ecx, [esi + 4]
mov dword [ebp - 0x504], ebx
call fcn.00404940
mov eax, dword [eax]
cmp eax, dword [esi + 8]
je 0x40beb3
mov edi, dword [eax + 0x14]
jmp 0x40beb5
xor edi, edi
mov ebx, dword [ebp - 0x4fc]
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x40bedd
push 0
lea ecx, [ebp - 0x4fc]
call fcn.004015a0
mov ebx, dword [ebp - 0x4fc]
mov esi, dword [ebp - 0x4f8]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x40bf05
push 0
lea ecx, [ebp - 0x4f8]
call fcn.004015a0
mov esi, dword [ebp - 0x4f8]
push edi
push ebx
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 1
je 0x40bf1e
cmp eax, 6
je 0x40bf1e
xor eax, eax
jmp 0x40bf23
mov eax, 1
mov edx, dword [ebp - 0x510]
push eax
push str.CDelDrvApp::InitInstance_m_bRestart___1_d__n
push 4
mov dword [edx + 0x124], eax
call fcn.00403750
lea eax, [esi - 0x10]
add esp, 0xc
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bf5f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bf7f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0042cb3b
mov eax, dword [eax + 0xc]
push eax
push str.__MFP_DelDrv__
call dword [sym.imp.USER32.dll_UnregisterClassW]
lea ecx, [ebp - 0x944]
mov dword [ebp - 4], 0xffffffff
call fcn.0040c420
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0051e701
mov esp, ebp
pop ebp
ret