Function at 0x401690
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x240
mov dword [ebp - 0x12c], 0
call fcn.004019a0
and eax, 0xff
test eax, eax
jne 0x4016cb
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push ecx
push str._s_only_runs_on_Windows_2000_n
call fcn.00402237
add esp, 8
push 0x57
call fcn.00402162
cmp dword [ebp + 8], 2
jl 0x4016ea
cmp dword [ebp + 8], 4
jg 0x4016ea
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 4]
push eax
call section..text
add esp, 4
test eax, eax
jne 0x4016fd
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push edx
call fcn.00401c60
add esp, 4
jmp 0x401995
mov byte [ebp - 0x130], 0
mov eax, dword [ebp + 0xc]
add eax, 4
mov dword [ebp - 0x10c], eax
mov ecx, dword [ebp - 0x10c]
add ecx, 4
mov dword [ebp - 0x10c], ecx
mov edx, dword [ebp - 0x10c]
cmp dword [edx], 0
je 0x401785
push 0x4074e0
mov eax, dword [ebp - 0x10c]
mov ecx, dword [eax]
push ecx
call fcn.00401cb0
add esp, 8
test eax, eax
jne 0x40174d
mov byte [ebp - 0x130], 1
jmp 0x401783
push 0x4074dc
mov edx, dword [ebp - 0x10c]
mov eax, dword [edx]
push eax
call fcn.00401cb0
add esp, 8
test eax, eax
jne 0x401770
mov byte [0x40b8d8], 1
jmp 0x401783
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push edx
call fcn.00401c60
add esp, 4
jmp 0x401995
jmp 0x401710
lea eax, [ebp - 0x108]
push eax
call fcn.004010a0
add esp, 4
lea ecx, [ebp - 0x128]
push ecx
lea edx, [ebp - 0x134]
push edx
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
push ecx
call section..text
add esp, 4
push eax
call fcn.004011f0
add esp, 0xc
test eax, eax
je 0x4018a5
mov edx, dword [ebp - 0x130]
and edx, 0xff
test edx, edx
je 0x401838
lea eax, [ebp - 0x128]
push eax
mov ecx, dword [ebp - 0x134]
push ecx
push 5
call dword [sym.imp.SETUPAPI.dll_SetupDiCallClassInstaller]
test eax, eax
jne 0x401810
mov edx, dword [ebp - 0x134]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
push str.CallClassInstaller_REMOVE_
call fcn.00401160
add esp, 4
mov eax, 2
jmp 0x401995
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
push ecx
push str.The__s_driver_was_uninstalled
call fcn.00402237
add esp, 8
mov edx, dword [ebp - 0x134]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
xor eax, eax
jmp 0x401995
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x240], eax
mov eax, dword [ebp - 0x134]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov ecx, dword [ebp - 0x240]
push ecx
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [ebp - 0x12c]
push edx
push 1
lea eax, [ebp - 0x108]
push eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 4]
push edx
call section..text
add esp, 4
push eax
push 0
call sub.newdev.dll_UpdateDriverForPlugAndPlayDevicesA
test eax, eax
jne 0x4018a0
push str.UpdateDriverForPlugAndPlayDevices
call fcn.00401160
add esp, 4
mov eax, 2
jmp 0x401995
jmp 0x401934
mov eax, dword [ebp - 0x130]
and eax, 0xff
test eax, eax
je 0x4018d2
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 4]
push edx
push str.The__s_driver_was_not_found
call fcn.00402237
add esp, 8
mov eax, 2
jmp 0x401995
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x103
je 0x4018f6
push str.Unknown_failure
call fcn.00401160
add esp, 4
mov eax, 2
jmp 0x401995
lea eax, [ebp - 0x12c]
push eax
lea ecx, [ebp - 0x108]
push ecx
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 4]
push eax
call section..text
add esp, 4
push eax
call fcn.00401400
add esp, 0xc
test eax, eax
jne 0x401934
push str.InstallRootEnumeratedDriver
call fcn.00401160
add esp, 4
mov eax, 2
jmp 0x401995
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 4]
push edx
call fcn.00401050
add esp, 4
push eax
lea eax, [ebp - 0x23c]
push eax
call fcn.004019f0
add esp, 8
push eax
call fcn.00401ab0
add esp, 4
push str.installed
call fcn.00402237
add esp, 4
cmp dword [ebp - 0x12c], 0
je 0x401986
push str.__Reboot_Required__n
call fcn.00402237
add esp, 4
mov eax, 1
jmp 0x401995
push str._and_started_n
call fcn.00402237
add esp, 4
xor eax, eax
mov esp, ebp
pop ebp
ret