Function at 0x4016f0
Capabilities:
Delete registry value
Get common file path
Get graphical window text
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4227c3
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xad8
push ebx
push ebp
push esi
push edi
push str.VEN_8086DEV_2415
lea ecx, [esp + 0x38]
call fcn.00418d10
xor ebp, ebp
push str.VEN_8086DEV_2425
lea ecx, [esp + 0x30]
mov dword [esp + 0xaf4], ebp
call fcn.00418d10
push str.VEN_8086DEV_2445
lea ecx, [esp + 0x28]
mov byte [esp + 0xaf4], 1
call fcn.00418d10
push str.VEN_1106DEV_3058
lea ecx, [esp + 0x6c]
mov byte [esp + 0xaf4], 2
call fcn.00418d10
push str.VEN_1106DEV_3059
lea ecx, [esp + 0x74]
mov byte [esp + 0xaf4], 3
call fcn.00418d10
push str.VEN_1039DEV_7012
lea ecx, [esp + 0x24]
mov byte [esp + 0xaf4], 4
call fcn.00418d10
push str.VEN_10B9DEV_5451
lea ecx, [esp + 0x7c]
mov byte [esp + 0xaf4], 5
call fcn.00418d10
push str.VEN_8086DEV_7195
lea ecx, [esp + 0x5c]
mov byte [esp + 0xaf4], 6
call fcn.00418d10
push str.VEN_8086DEV_24C5
lea ecx, [esp + 0x80]
mov byte [esp + 0xaf4], 7
call fcn.00418d10
push str.VEN_8086DEV_2485
lea ecx, [esp + 0x54]
mov byte [esp + 0xaf4], 8
call fcn.00418d10
push str.VEN_1022DEV_7445
lea ecx, [esp + 0x78]
mov byte [esp + 0xaf4], 9
call fcn.00418d10
push str.VEN_1022DEV_746D
lea ecx, [esp + 0x4c]
mov byte [esp + 0xaf4], 0xa
call fcn.00418d10
push str.VEN_8086DEV_24D5
lea ecx, [esp + 0x70]
mov byte [esp + 0xaf4], 0xb
call fcn.00418d10
push str.VEN_1002DEV_4341
lea ecx, [esp + 0x44]
mov byte [esp + 0xaf4], 0xc
call fcn.00418d10
push str.VEN_10B9DEV_5455
lea ecx, [esp + 0x68]
mov byte [esp + 0xaf4], 0xd
call fcn.00418d10
mov byte [esp + 0xaf0], 0xe
push str.VEN_1039DEV_7018
lea ecx, [esp + 0x3c]
call fcn.00418d10
push str.VEN_10DEDEV_006A
lea ecx, [esp + 0x60]
mov byte [esp + 0xaf4], 0xf
call fcn.00418d10
push str.VEN_10DEDEV_008A
lea ecx, [esp + 0x34]
mov byte [esp + 0xaf4], 0x10
call fcn.00418d10
push str.VEN_10DEDEV_00DA
lea ecx, [esp + 0x58]
mov byte [esp + 0xaf4], 0x11
call fcn.00418d10
push str.VEN_10DEDEV_00EA
lea ecx, [esp + 0x2c]
mov byte [esp + 0xaf4], 0x12
call fcn.00418d10
push str.VEN_10DEDEV_01B1
lea ecx, [esp + 0x50]
mov byte [esp + 0xaf4], 0x13
call fcn.00418d10
push str.VEN_8086DEV_25A6
lea ecx, [esp + 0x48]
mov byte [esp + 0xaf4], 0x14
call fcn.00418d10
push str.VEN_8086
lea ecx, [esp + 0x18]
mov byte [esp + 0xaf4], 0x15
call fcn.00418d10
mov dl, byte [0x42f3d8]
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x1a1]
mov byte [esp + 0x1a0], dl
mov byte [esp + 0x3a0], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x3a1]
mov byte [esp + 0x5a0], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x5a1]
mov byte [esp + 0x8a8], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x8a9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [0x42d57c]
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x4a0]
push 0x100
push ecx
mov byte [esp + 0xaf8], 0x17
mov dword [esp + 0x88], ebp
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edi, str.Temp_
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x4a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov ebx, ecx
mov esi, edi
or ecx, 0xffffffff
mov edi, edx
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x1a0]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x4a0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x1a0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [0x42f388]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x9a8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x1a4]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
jne 0x401a52
cmp dword [esp + 0x80], ebp
je 0x402805
push 6
push 0
push 0x42d1dc
push 0
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x401c19
push str.SetupDiCreateDeviceInfoList
call fcn.004016a0
add esp, 4
lea ecx, [esp + 0x18]
mov byte [esp + 0xaf0], 0x16
call fcn.00418ca2
lea ecx, [esp + 0x14]
mov byte [esp + 0xaf0], 0x15
call fcn.00418ca2
lea ecx, [esp + 0x44]
mov byte [esp + 0xaf0], 0x14
call fcn.00418ca2
lea ecx, [esp + 0x4c]
mov byte [esp + 0xaf0], 0x13
call fcn.00418ca2
lea ecx, [esp + 0x28]
mov byte [esp + 0xaf0], 0x12
call fcn.00418ca2
lea ecx, [esp + 0x54]
mov byte [esp + 0xaf0], 0x11
call fcn.00418ca2
lea ecx, [esp + 0x30]
mov byte [esp + 0xaf0], 0x10
call fcn.00418ca2
lea ecx, [esp + 0x5c]
mov byte [esp + 0xaf0], 0xf
call fcn.00418ca2
lea ecx, [esp + 0x38]
mov byte [esp + 0xaf0], 0xe
call fcn.00418ca2
lea ecx, [esp + 0x64]
mov byte [esp + 0xaf0], 0xd
call fcn.00418ca2
lea ecx, [esp + 0x40]
mov byte [esp + 0xaf0], 0xc
call fcn.00418ca2
lea ecx, [esp + 0x6c]
mov byte [esp + 0xaf0], 0xb
call fcn.00418ca2
lea ecx, [esp + 0x48]
mov byte [esp + 0xaf0], 0xa
call fcn.00418ca2
lea ecx, [esp + 0x74]
mov byte [esp + 0xaf0], 9
call fcn.00418ca2
lea ecx, [esp + 0x50]
mov byte [esp + 0xaf0], 8
call fcn.00418ca2
lea ecx, [esp + 0x7c]
mov byte [esp + 0xaf0], 7
call fcn.00418ca2
lea ecx, [esp + 0x58]
mov byte [esp + 0xaf0], 6
call fcn.00418ca2
lea ecx, [esp + 0x78]
mov byte [esp + 0xaf0], 5
call fcn.00418ca2
lea ecx, [esp + 0x20]
mov byte [esp + 0xaf0], 4
call fcn.00418ca2
lea ecx, [esp + 0x70]
mov byte [esp + 0xaf0], 3
call fcn.00418ca2
lea ecx, [esp + 0x68]
mov byte [esp + 0xaf0], 2
call fcn.00418ca2
lea ecx, [esp + 0x24]
mov byte [esp + 0xaf0], 1
call fcn.00418ca2
lea ecx, [esp + 0x2c]
mov byte [esp + 0xaf0], 0
call fcn.00418ca2
lea ecx, [esp + 0x34]
mov dword [esp + 0xaf0], ebx
call fcn.00418ca2
xor eax, eax
jmp 0x4027b6
lea edx, [esp + 0x84]
mov esi, 1
push edx
push 0
push ebx
mov dword [esp + 0x90], 0x1c
mov dword [esp + 0x48], esi
mov dword [esp + 0x1c], 0
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
mov edi, dword [esp + 0xafc]
test eax, eax
je 0x40204e
mov esi, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdA]
push 0
lea eax, [esp + 0xa4]
push 0x100
lea ecx, [esp + 0x8c]
push eax
push ecx
push ebx
call esi
xor edx, edx
cmp ebp, 0x5a
setge dl
mov eax, dword [edi + 0x1c]
dec edx
and edx, 5
push 0
add ebp, edx
push ebp
push 0x402
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [0x42f3d4]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
je 0x401cc0
mov edx, dword [0x42f3d4]
mov eax, dword [edx - 8]
test eax, eax
jne 0x401f64
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401f6e
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401f78
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401f82
mov eax, dword [esp + 0x68]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401f8c
mov edx, dword [esp + 0x70]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401f93
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401f9a
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fa1
mov edx, dword [esp + 0x58]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fa8
mov ecx, dword [esp + 0x7c]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401faf
mov eax, dword [esp + 0x50]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fb6
mov edx, dword [esp + 0x74]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fbd
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fc4
mov eax, dword [esp + 0x6c]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fcb
mov edx, dword [esp + 0x40]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fd2
mov ecx, dword [esp + 0x64]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fd9
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fe0
mov edx, dword [esp + 0x5c]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fe7
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401fee
mov eax, dword [esp + 0x54]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401ff5
mov edx, dword [esp + 0x28]
lea eax, [esp + 0xa0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x401ffc
mov ecx, dword [esp + 0x4c]
lea edx, [esp + 0xa0]
push ecx
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x402003
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0xa0]
push eax
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x40200a
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x84]
inc eax
push edx
push eax
push ebx
mov dword [esp + 0x1c], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x402059
jmp 0x401c5b
mov edx, 1
jmp 0x40200f
mov edx, 2
jmp 0x40200f
mov edx, 3
jmp 0x40200f
mov edx, 4
jmp 0x40200f
mov edx, 5
jmp 0x40200f
mov edx, 6
jmp 0x40200f
mov edx, 7
jmp 0x40200f
mov edx, 8
jmp 0x40200f
mov edx, 9
jmp 0x40200f
mov edx, 0xa
jmp 0x40200f
mov edx, 0xb
jmp 0x40200f
mov edx, 0xc
jmp 0x40200f
mov edx, 0xd
jmp 0x40200f
mov edx, 0xe
jmp 0x40200f
mov edx, 0xf
jmp 0x40200f
mov edx, 0x10
jmp 0x40200f
mov edx, 0x11
jmp 0x40200f
mov edx, 0x12
jmp 0x40200f
mov edx, 0x13
jmp 0x40200f
mov edx, 0x14
jmp 0x40200f
mov edx, 0x15
jmp 0x40200f
mov edx, 0x16
jmp 0x40200f
mov edx, 0x17
lea edi, [esp + 0xa0]
or ecx, 0xffffffff
xor eax, eax
lea esi, [esp + 0x2a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x1c], esi
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x1c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x3c]
mov byte [esp + 0x2cc], 0
jmp 0x402055
mov edx, dword [esp + 0x80]
test edx, edx
jne 0x40205b
xor esi, esi
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov ecx, dword [0x42f3d4]
mov eax, dword [ecx - 8]
test eax, eax
je 0x4020a3
lea edx, [esp + 0x1c]
push 8
push edx
mov ecx, 0x42f3d4
call fcn.00416c18
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0xaf4], 0x18
call fcn.00418ddb
lea ecx, [esp + 0x1c]
mov byte [esp + 0xaf0], 0x17
call fcn.00418ca2
cmp esi, 1
jne 0x40241a
xor eax, eax
mov ecx, dword [esp + 0xafc]
cmp ebp, 0x5a
setge al
mov edx, dword [ecx + 0x1c]
dec eax
and eax, 5
xor ebx, ebx
add ebp, eax
push ebx
push ebp
push 0x402
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
lea edi, [esp + 0x2a0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x7a8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push str.CC_0401
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x1c]
mov byte [esp + 0x7d1], bl
call fcn.00418e2b
lea ecx, [esp + 0x7a8]
push str.VEN_1106DEV_3059SUBSYS_81221584
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
je 0x40216b
lea edx, [esp + 0x10]
push ebx
push edx
push ebx
push 0xf003f
push ebx
push ebx
push ebx
push str.SystemCurrentControlSetControlProcessor
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x40216b
mov eax, dword [esp + 0x10]
push str.CstateFlags
push eax
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [0x42f330]
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ebx
jl 0x40238f
mov dword [esp + 0x3c], 0x42f388
lea edi, [esp + 0x4a0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x1a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x42d158
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x1a4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x40]
mov edi, dword [ecx]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x1a4]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.0040ab83
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x4022e5
push ebx
lea ecx, [esp + 0x6ac]
push 0xff
push ecx
call fcn.0040aaf0
add esp, 0xc
test eax, eax
je 0x4022e5
lea edx, [esp + 0x7a8]
lea eax, [esp + 0x6a8]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
je 0x40227b
lea edi, [esp + 0x1a0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x5a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x1c], 1
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x6a8]
push ecx
push edx
call fcn.0040aa70
add esp, 8
test eax, eax
je 0x4022c7
lea edi, [esp + 0x1a0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x8a8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x10], 1
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebx
lea ecx, [esp + 0x6ac]
push 0xff
push ecx
call fcn.0040aaf0
add esp, 0xc
test eax, eax
jne 0x40222c
push ebx
call fcn.0040a9ea
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x40]
mov ecx, dword [0x42f330]
add esp, 4
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x3c], edx
jle 0x402192
cmp dword [esp + 0x10], 1
jne 0x402342
lea edi, [esp + 0x8a8]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x3a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x1c]
cmp eax, 1
jne 0x40237b
lea edi, [esp + 0x5a0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x3a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4024c5
test eax, eax
jne 0x4024c5
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4024c5
or ecx, 0xffffffff
lea edi, [esp + 0x4a0]
xor eax, eax
lea edx, [esp + 0x1a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x1a0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [0x42f388]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x3a0]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x1a0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4024c5
test esi, esi
jne 0x4024c5
mov ecx, dword [0x42f330]
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x60], eax
jl 0x4024c5
xor ebx, ebx
lea edi, [esp + 0x4a0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x1a0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x1a0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebx + 0x42f388]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x1a0]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebx + 0x42f338]
call fcn.00418e2b
mov eax, dword [esp + 0x60]
mov ecx, dword [0x42f330]
inc eax
add ebx, 4
cmp eax, ecx
mov dword [esp + 0x60], eax
jle 0x40243b
lea ecx, [esp + 0x2a0]
push str.VEN_8086
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
lea edx, [esp + 0x2a0]
push str.VEN_1106
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
lea eax, [esp + 0x2a0]
push str.VEN_1039
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
lea ecx, [esp + 0x2a0]
push str.VEN_10B9
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
lea edx, [esp + 0x2a0]
push str.VEN_1022
push edx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
lea eax, [esp + 0x2a0]
push str.VEN_1002
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
lea ecx, [esp + 0x2a0]
push str.VEN_10DE
push ecx
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x2a0]
push edx
push eax
call fcn.0040ab96
add esp, 8
test eax, eax
jne 0x4027cf
mov eax, dword [0x42f330]
mov esi, 1
cmp eax, esi
jl 0x4025ef
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupCopyOEMInfA]
mov edi, 0x42f338
mov eax, dword [edi]
push 0
push 0
lea ecx, [esp + 0x5a8]
push 0x104
push ecx
push 0
push 1
push 0
push eax
call ebx
mov eax, dword [0x42f330]
inc esi
add edi, 4
cmp esi, eax
jle 0x4025c6
xor edx, edx
mov eax, dword [esp + 0xafc]
cmp ebp, 0x5a
push 0
setge dl
mov ecx, dword [eax + 0x1c]
dec edx
and edx, 5
add ebp, edx
push ebp
push 0x402
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0x18]
mov byte [esp + 0xaf0], 0x16
call fcn.00418ca2
lea ecx, [esp + 0x14]
mov byte [esp + 0xaf0], 0x15
call fcn.00418ca2
lea ecx, [esp + 0x44]
mov byte [esp + 0xaf0], 0x14
call fcn.00418ca2
lea ecx, [esp + 0x4c]
mov byte [esp + 0xaf0], 0x13
call fcn.00418ca2
lea ecx, [esp + 0x28]
mov byte [esp + 0xaf0], 0x12
call fcn.00418ca2
lea ecx, [esp + 0x54]
mov byte [esp + 0xaf0], 0x11
call fcn.00418ca2
lea ecx, [esp + 0x30]
mov byte [esp + 0xaf0], 0x10
call fcn.00418ca2
lea ecx, [esp + 0x5c]
mov byte [esp + 0xaf0], 0xf
call fcn.00418ca2
lea ecx, [esp + 0x38]
mov byte [esp + 0xaf0], 0xe
call fcn.00418ca2
lea ecx, [esp + 0x64]
mov byte [esp + 0xaf0], 0xd
call fcn.00418ca2
lea ecx, [esp + 0x40]
mov byte [esp + 0xaf0], 0xc
call fcn.00418ca2
lea ecx, [esp + 0x6c]
mov byte [esp + 0xaf0], 0xb
call fcn.00418ca2
lea ecx, [esp + 0x48]
mov byte [esp + 0xaf0], 0xa
call fcn.00418ca2
lea ecx, [esp + 0x74]
mov byte [esp + 0xaf0], 9
call fcn.00418ca2
lea ecx, [esp + 0x50]
mov byte [esp + 0xaf0], 8
call fcn.00418ca2
lea ecx, [esp + 0x7c]
mov byte [esp + 0xaf0], 7
call fcn.00418ca2
lea ecx, [esp + 0x58]
mov byte [esp + 0xaf0], 6
call fcn.00418ca2
lea ecx, [esp + 0x78]
mov byte [esp + 0xaf0], 5
call fcn.00418ca2
lea ecx, [esp + 0x20]
mov byte [esp + 0xaf0], 4
call fcn.00418ca2
lea ecx, [esp + 0x70]
mov byte [esp + 0xaf0], 3
call fcn.00418ca2
lea ecx, [esp + 0x68]
mov byte [esp + 0xaf0], 2
call fcn.00418ca2
lea ecx, [esp + 0x24]
mov byte [esp + 0xaf0], 1
call fcn.00418ca2
mov byte [esp + 0xaf0], 0
lea ecx, [esp + 0x2c]
call fcn.00418ca2
lea ecx, [esp + 0x34]
mov dword [esp + 0xaf0], 0xffffffff
call fcn.00418ca2
mov eax, 1
mov ecx, dword [esp + 0xae8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xae4
ret
lea edx, [esp + 0x80]
lea eax, [esp + 0x3a0]
push edx
push 1
lea ecx, [esp + 0x2a8]
push eax
push ecx
push 0
call sub.newdev.dll_UpdateDriverForPlugAndPlayDevicesA
test eax, eax
jne 0x4025ef
push str.UpdateDriverForPlugAndPlayDevices
call fcn.004016a0
add esp, 4
lea ecx, [esp + 0x18]
mov byte [esp + 0xaf0], 0x16
call fcn.00418ca2
lea ecx, [esp + 0x14]
mov byte [esp + 0xaf0], 0x15
call fcn.00418ca2
lea ecx, [esp + 0x44]
mov byte [esp + 0xaf0], 0x14
call fcn.00418ca2
lea ecx, [esp + 0x4c]
mov byte [esp + 0xaf0], 0x13
call fcn.00418ca2
lea ecx, [esp + 0x28]
mov byte [esp + 0xaf0], 0x12
call fcn.00418ca2
lea ecx, [esp + 0x54]
mov byte [esp + 0xaf0], 0x11
call fcn.00418ca2
lea ecx, [esp + 0x30]
mov byte [esp + 0xaf0], 0x10
call fcn.00418ca2
lea ecx, [esp + 0x5c]
mov byte [esp + 0xaf0], 0xf
call fcn.00418ca2
lea ecx, [esp + 0x38]
mov byte [esp + 0xaf0], 0xe
call fcn.00418ca2
lea ecx, [esp + 0x64]
mov byte [esp + 0xaf0], 0xd
call fcn.00418ca2
lea ecx, [esp + 0x40]
mov byte [esp + 0xaf0], 0xc
call fcn.00418ca2
lea ecx, [esp + 0x6c]
mov byte [esp + 0xaf0], 0xb
call fcn.00418ca2
lea ecx, [esp + 0x48]
mov byte [esp + 0xaf0], 0xa
call fcn.00418ca2
lea ecx, [esp + 0x74]
mov byte [esp + 0xaf0], 9
call fcn.00418ca2
lea ecx, [esp + 0x50]
mov byte [esp + 0xaf0], 8
call fcn.00418ca2
lea ecx, [esp + 0x7c]
mov byte [esp + 0xaf0], 7
call fcn.00418ca2
lea ecx, [esp + 0x58]
mov byte [esp + 0xaf0], 6
call fcn.00418ca2
lea ecx, [esp + 0x78]
mov byte [esp + 0xaf0], 5
call fcn.00418ca2
lea ecx, [esp + 0x20]
mov byte [esp + 0xaf0], 4
call fcn.00418ca2
lea ecx, [esp + 0x70]
mov byte [esp + 0xaf0], 3
call fcn.00418ca2
lea ecx, [esp + 0x68]
mov byte [esp + 0xaf0], 2
call fcn.00418ca2
lea ecx, [esp + 0x24]
mov byte [esp + 0xaf0], 1
call fcn.00418ca2
lea ecx, [esp + 0x2c]
mov byte [esp + 0xaf0], 0
call fcn.00418ca2
lea ecx, [esp + 0x34]
mov dword [esp + 0xaf0], 0xffffffff
call fcn.00418ca2
xor eax, eax
jmp 0x4027b6