Function at 0x407830
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x458d75
mov eax, dword fs:[0]
push eax
sub esp, 0xcc0
mov eax, dword [0x46e3d8]
xor eax, esp
mov dword [esp + 0xcb8], eax
push ebx
push esi
push edi
mov eax, dword [0x46e3d8]
xor eax, esp
push eax
lea eax, [esp + 0xcd0]
mov dword fs:[0], eax
xor esi, esi
mov dword [esp + 0x160], 7
mov dword [esp + 0x15c], esi
mov word [esp + 0x14c], si
mov dword [esp + 0xcd8], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
push 1
mov byte [esp + 0xcdc], 1
call fcn.00436e10
add esp, 4
mov ecx, 0x470ce4
mov dword [esp + 0x10], esi
call fcn.0040dca0
test eax, eax
jbe 0x40943b
jmp 0x4078d0
push str.INF_Info
push str.__s_
push 0x46fa40
xor eax, eax
call fcn.00431730
mov edi, dword [0x470ce8]
add dword [0x46fa60], 1
mov ebx, dword [esp + 0x1c]
add esp, 0xc
test edi, edi
je 0x40791b
mov ecx, dword [0x470cec]
sub ecx, edi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x407926
call fcn.0043e955
mov edi, dword [0x470ce8]
mov esi, ebx
imul esi, esi, 0x104
cmp dword [esi + edi + 0x38], 8
mov dword [esp + 0x1c], esi
jb 0x40793f
mov edi, dword [esi + edi + 0x24]
jmp 0x407943
lea edi, [esi + edi + 0x24]
push edi
push str.INF___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov edi, dword [0x470ce8]
add esp, 0xc
test edi, edi
je 0x40797f
mov ecx, dword [0x470cec]
sub ecx, edi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x40798a
call fcn.0043e955
mov edi, dword [0x470ce8]
cmp dword [esi + edi + 0x38], 8
jb 0x407997
mov edi, dword [esi + edi + 0x24]
jmp 0x40799b
lea edi, [esi + edi + 0x24]
push 0
push 2
push 0
push edi
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
cmp eax, 0xffffffff
mov dword [esp + 0x38], eax
jne 0x407a62
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xe0000100
jne 0x407a3a
push str.INF_has_wrong_INF_style
push 0x46fa40
mov eax, 1
call fcn.00431730
mov ecx, dword [0x470ce8]
add esp, 8
cmp ecx, dword [0x470cec]
mov edi, ecx
jbe 0x4079f4
call fcn.0043e955
mov ecx, dword [0x470ce8]
add esi, edi
cmp esi, dword [0x470cec]
mov eax, 0x470ce4
mov ebx, eax
mov dword [esp + 0x58], edi
ja 0x407a0d
cmp esi, ecx
jae 0x407a12
call fcn.0043e955
push esi
push ebx
lea eax, [esp + 0xc8]
push eax
call fcn.0040dd70
sub dword [esp + 0x10], 1
push 0xffffffffffffffff
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
sub dword [0x46fa60], 1
jmp 0x40941e
test eax, eax
je 0x407a56
push eax
push str.Error_0x_X_opening
push 0x46fa40
mov eax, 1
call fcn.00431730
add esp, 0xc
sub dword [0x46fa60], 1
jmp 0x40941e
mov esi, str.DriverVer
mov edi, str.Version
mov edx, eax
call fcn.00409650
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x407a80
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407a80
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea esi, [esp + 0x150]
call fcn.00404170
lea ecx, [esp + 0x14]
push ecx
mov ebx, 1
xor eax, eax
mov edx, esi
mov dword [esp + 0x18], 0x2c
call fcn.00403570
mov edi, eax
mov edx, esi
push edi
push edx
xor ecx, ecx
lea esi, [esp + 0x118]
call fcn.0040db70
mov esi, eax
mov byte [esp + 0xcd8], 2
mov ecx, dword [0x470ce8]
test ecx, ecx
je 0x407aff
mov edx, dword [0x470cec]
sub edx, ecx
mov eax, 0x7e07e07f
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x407b0a
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov ebx, dword [esp + 0x1c]
push 0xffffffffffffffff
lea ecx, [ebx + ecx + 0x3c]
push 0
mov eax, esi
call fcn.004040c0
mov byte [esp + 0xcd8], 1
cmp dword [esp + 0x128], 8
jb 0x407b3f
mov eax, dword [esp + 0x114]
push eax
call fcn.0043e965
add esp, 4
mov ecx, dword [esp + 0x15c]
push ecx
lea edx, [esp + 0x14c]
lea ecx, [edi + 1]
push edx
lea esi, [esp + 0x118]
call fcn.0040db70
mov edi, eax
mov byte [esp + 0xcd8], 3
mov esi, dword [0x470ce8]
test esi, esi
je 0x407b91
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x407b9c
call fcn.0043e955
mov esi, dword [0x470ce8]
push 0xffffffffffffffff
lea ecx, [ebx + esi + 0x58]
push 0
mov eax, edi
call fcn.004040c0
mov byte [esp + 0xcd8], 1
cmp dword [esp + 0x128], 8
jb 0x407bcd
mov eax, dword [esp + 0x114]
push eax
call fcn.0043e965
add esp, 4
mov esi, dword [0x470ce8]
test esi, esi
je 0x407bf6
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x407c01
call fcn.0043e955
mov esi, dword [0x470ce8]
mov edx, dword [esp + 0x38]
lea ecx, [ebx + esi]
mov esi, str.ClassGUID
mov edi, str.Version
mov dword [esp + 0x14], ecx
call fcn.00409650
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407c20
sub ecx, esi
mov esi, dword [esp + 0x14]
sar ecx, 1
push ecx
push eax
add esi, 0x74
call fcn.00404170
mov esi, dword [0x470ce8]
test esi, esi
je 0x407c66
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x407c71
call fcn.0043e955
mov esi, dword [0x470ce8]
lea eax, [ebx + esi + 0x74]
call fcn.0043bb70
mov esi, dword [0x470ce8]
test esi, esi
je 0x407ca3
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x407cae
call fcn.0043e955
mov esi, dword [0x470ce8]
lea edx, [ebx + esi]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x38]
mov esi, str.Name
mov edi, str.PackageInfo
call fcn.00409650
mov ecx, eax
lea esi, [ecx + 2]
lea ecx, [ecx]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x407cd0
sub ecx, esi
mov esi, dword [esp + 0x14]
sar ecx, 1
push ecx
push eax
call fcn.00404170
mov esi, dword [0x470ce8]
test esi, esi
je 0x407d13
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x407d1e
call fcn.0043e955
mov esi, dword [0x470ce8]
mov edx, dword [esp + 0x38]
lea eax, [ebx + esi]
mov esi, str.Sequence
mov edi, str.PackageInfo
mov dword [esp + 0x14], eax
call fcn.00409650
push eax
call fcn.0043ef57
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov dword [ecx + 0x1c], eax
mov esi, dword [0x470ce8]
add esp, 4
test esi, esi
je 0x407d73
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x407d7e
call fcn.0043e955
mov esi, dword [0x470ce8]
cmp dword [ebx + esi + 0x54], 8
jb 0x407d8b
mov esi, dword [ebx + esi + 0x40]
jmp 0x407d8f
lea esi, [ebx + esi + 0x40]
push esi
push str.Date___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov esi, dword [0x470ce8]
add esp, 0xc
test esi, esi
je 0x407dcb
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x407dd6
call fcn.0043e955
mov esi, dword [0x470ce8]
cmp dword [ebx + esi + 0x70], 8
jb 0x407de3
mov esi, dword [ebx + esi + 0x5c]
jmp 0x407de7
lea esi, [ebx + esi + 0x5c]
push esi
push str.Version___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov esi, dword [0x470ce8]
add esp, 0xc
test esi, esi
je 0x407e23
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x407e2e
call fcn.0043e955
mov esi, dword [0x470ce8]
cmp dword [ebx + esi + 0x8c], 8
jb 0x407e3e
mov esi, dword [ebx + esi + 0x78]
jmp 0x407e42
lea esi, [ebx + esi + 0x78]
push esi
push str.ClassGUID___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov esi, dword [0x470ce8]
add esp, 0xc
test esi, esi
je 0x407e7e
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x407e89
call fcn.0043e955
mov esi, dword [0x470ce8]
cmp dword [ebx + esi + 0x18], 8
jb 0x407e96
mov esi, dword [ebx + esi + 4]
jmp 0x407e9a
lea esi, [ebx + esi + 4]
push esi
push str.PackageInfo.Name___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov esi, dword [0x470ce8]
add esp, 0xc
test esi, esi
je 0x407ed6
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x407ee1
call fcn.0043e955
mov esi, dword [0x470ce8]
mov edx, dword [ebx + esi + 0x1c]
push edx
push str.PackageInfo.Sequence___d
push 0x46fa40
xor eax, eax
call fcn.00431730
mov ecx, dword [esp + 0x44]
add esp, 0xc
lea eax, [esp + 0x98]
push eax
xor edi, edi
push edi
push str.Manufacturer
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
jne 0x407f38
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
je 0x407f38
push str.Error_in_Manufacturer_section__ignoring
push 0x46fa40
lea eax, [edi + 1]
call fcn.00431730
add esp, 8
lea edx, [esp + 0x4c]
push edx
push 0x400
lea eax, [esp + 0x4cc]
push eax
push edi
push edi
push edi
lea ecx, [esp + 0xb0]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupGetLineTextW]
test eax, eax
jne 0x407f8d
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
je 0x407f8d
push eax
push str.Error_0x_X_retrieving_a_Manufacturer_line._Skipping_inf
push 0x46fa40
mov eax, 2
call fcn.00431730
add esp, 0xc
sub dword [0x46fa60], 1
jmp 0x40941e
lea eax, [esp + 0x4c4]
mov dword [esp + 0xf0], 7
mov dword [esp + 0xec], edi
mov word [esp + 0xdc], di
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x407fb1
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x4c8]
push edx
lea esi, [esp + 0xe0]
call fcn.00404170
mov byte [esp + 0xcd8], 4
mov eax, dword [esp + 0xdc]
mov ebx, 8
cmp dword [esp + 0xf0], ebx
jae 0x407ff9
lea eax, [esp + 0xdc]
push eax
push str.Manufacturer___s
push 0x46fa40
xor eax, eax
call fcn.00431730
add esp, 0xc
lea eax, [esp + 0xd8]
push eax
call fcn.0040acf0
cmp dword [esp + 0xf0], ebx
mov eax, dword [esp + 0xdc]
jae 0x408032
lea eax, [esp + 0xdc]
push eax
push str.Resolved_Manufacturer___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xe8]
add esp, 0xc
cmp ecx, ebx
jb 0x408255
cmp edx, edi
mov esi, edx
mov dword [esp + 0x18], esi
je 0x408093
cmp ecx, ebx
mov eax, edx
jae 0x408074
lea eax, [esp + 0xdc]
cmp eax, esi
ja 0x408093
cmp ecx, ebx
mov eax, edx
jae 0x408085
lea eax, [esp + 0xdc]
mov edi, dword [esp + 0xec]
lea eax, [eax + edi*2]
cmp esi, eax
jbe 0x4080ad
call fcn.0043e955
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xdc]
mov edi, dword [esp + 0xec]
cmp ecx, ebx
mov eax, edx
jae 0x4080ba
lea eax, [esp + 0xdc]
lea ebx, [eax + edi*2]
test ebx, ebx
je 0x4080e8
cmp ecx, 8
mov eax, edx
jae 0x4080cf
lea eax, [esp + 0xdc]
cmp eax, ebx
ja 0x4080e8
cmp ecx, 8
mov eax, edx
jae 0x4080e1
lea eax, [esp + 0xdc]
lea eax, [eax + edi*2]
cmp ebx, eax
jbe 0x4080fb
call fcn.0043e955
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xdc]
cmp ecx, 8
lea edi, [esp + 0xd8]
jb 0x408265
test edx, edx
mov esi, edx
je 0x40813f
cmp ecx, 8
mov eax, edx
jae 0x40811f
lea eax, [esp + 0xdc]
cmp eax, esi
ja 0x40813f
cmp ecx, 8
mov eax, edx
jae 0x408131
lea eax, [esp + 0xdc]
mov ecx, dword [esp + 0xec]
lea edx, [eax + ecx*2]
cmp esi, edx
jbe 0x408144
call fcn.0043e955
mov ecx, dword [esp + 0x18]
push ecx
lea eax, [esp + 0xdc]
mov ecx, eax
push ecx
push ebx
push edi
push esi
push eax
lea eax, [esp + 0xe8]
call fcn.004110d0
add esp, 0x18
push 0x45cf7c
mov ebx, 2
xor eax, eax
lea edx, [esp + 0xdc]
call fcn.00403570
cmp eax, 0xffffffff
je 0x4081d7
push str.Inf_supports_64_bit.
push 0x46fa40
xor eax, eax
call fcn.00431730
mov esi, dword [0x470ce8]
add esp, 8
test esi, esi
je 0x4081c0
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x4081cb
call fcn.0043e955
mov esi, dword [0x470ce8]
mov edx, dword [esp + 0x1c]
mov byte [edx + esi + 0xf1], 1
mov eax, dword [esp + 0xdc]
mov esi, 8
cmp dword [esp + 0xf0], esi
jae 0x4081f3
lea eax, [esp + 0xdc]
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x98]
push ecx
push 0
push eax
push edx
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
jne 0x408271
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x408271
push eax
push str.Error_locating_a_device_section._Skipping_inf
push 0x46fa40
mov eax, ebx
call fcn.00431730
sub dword [0x46fa60], 1
add esp, 0xc
mov byte [esp + 0xcd8], 1
cmp dword [esp + 0xf0], esi
jb 0x40941e
mov eax, dword [esp + 0xdc]
push eax
jmp 0x409416
lea esi, [esp + 0xdc]
mov dword [esp + 0x18], esi
jmp 0x408067
lea esi, [esp + 0xdc]
jmp 0x408111
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, [esp + 0x4c]
push ecx
push 0x400
lea edx, [esp + 0x4cc]
push edx
xor edi, edi
push edi
lea eax, [esp + 0xa8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
jne 0x4082ba
call ebx
cmp eax, edi
je 0x4082ba
push eax
push str.SetupGetStringField_generated_an_unexpected_error._Ignoring_error
push 0x46fa40
lea eax, [edi + 2]
call fcn.00431730
add esp, 0xc
lea eax, [esp + 0x4c4]
mov dword [esp + 0x10c], 7
mov dword [esp + 0x108], edi
mov word [esp + 0xf8], di
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x4082e0
sub eax, edx
sar eax, 1
push eax
lea ecx, [esp + 0x4c8]
push ecx
lea esi, [esp + 0xfc]
call fcn.00404170
mov byte [esp + 0xcd8], 5
cmp dword [esp + 0x10c], 8
mov eax, dword [esp + 0xf8]
jae 0x408324
lea eax, [esp + 0xf8]
push eax
push str.Description:__s
push 0x46fa40
xor eax, eax
call fcn.00431730
add esp, 0xc
lea edx, [esp + 0x4c]
push edx
push 0x400
lea eax, [esp + 0x4cc]
push eax
push edi
push edi
push edi
lea ecx, [esp + 0xb0]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupGetLineTextW]
test eax, eax
jne 0x40837e
call ebx
cmp eax, edi
je 0x40837e
push eax
push str.SetupGetLineText_generated_an_unexpected_error._Ignoring_error
push 0x46fa40
mov eax, 2
call fcn.00431730
add esp, 0xc
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
cmp eax, edi
mov esi, edi
jbe 0x408399
call fcn.0043e955
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
cmp eax, edi
mov ebx, eax
mov dword [esp + 0x14], ebx
jbe 0x4083ac
call fcn.0043e955
mov edi, dword [esp + 0x44]
cmp ebx, esi
je 0x40843e
mov ecx, edi
sub ecx, esi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
cmp esi, edi
mov eax, dword [esp + 0x14]
lea ebx, [eax + edx*4]
mov dword [esp + 0x14], ebx
je 0x408404
mov ebx, eax
sub ebx, esi
push 0xffffffffffffffff
push 0
lea ecx, [esi + ebx]
mov eax, esi
call fcn.004040c0
add esi, 0x1c
cmp esi, edi
jne 0x4083e7
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x14]
cmp ebx, edi
je 0x40843a
lea esi, [ebx + 0x18]
jmp 0x408410
cmp dword [esi], 8
jb 0x408421
mov eax, dword [esi - 0x14]
push eax
call fcn.0043e965
add esp, 4
xor eax, eax
mov dword [esi - 4], eax
mov dword [esi], 7
mov word [esi - 0x14], ax
add esi, 0x1c
lea eax, [esi - 0x18]
cmp eax, edi
jne 0x408410
mov dword [esp + 0x44], ebx
push 0x2c
lea ecx, [esp + 0x40]
lea edi, [esp + 0x4c8]
call fcn.0043c130
add esp, 4
mov dword [esp + 0x2c], 1
mov dword [esp + 0x18], 0x1c
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4085da
mov ecx, dword [esp + 0x44]
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x2c], eax
jae 0x4085da
mov esi, dword [0x470ce8]
test esi, esi
mov ebx, dword [esp + 0x10]
je 0x4084bd
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x4084c8
call fcn.0043e955
mov esi, dword [0x470ce8]
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0xf4]
push ecx
lea esi, [edx + esi + 0xb0]
call fcn.0040da30
mov esi, dword [esp + 0x40]
test esi, esi
je 0x408503
mov ecx, dword [esp + 0x44]
sub ecx, esi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x40850c
call fcn.0043e955
mov esi, dword [esp + 0x40]
mov edi, esi
mov esi, dword [0x470ce8]
test esi, esi
je 0x408535
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x408540
call fcn.0043e955
mov esi, dword [0x470ce8]
mov ecx, dword [esp + 0x1c]
push edi
lea esi, [ecx + esi + 0x90]
call fcn.0040da30
mov esi, dword [esp + 0x40]
test esi, esi
je 0x408578
mov ecx, dword [esp + 0x44]
sub ecx, esi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x2c], eax
jb 0x408581
call fcn.0043e955
mov esi, dword [esp + 0x40]
mov edx, dword [esp + 0x18]
lea edi, [esi + edx]
mov esi, dword [0x470ce8]
test esi, esi
je 0x4085af
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x4085ba
call fcn.0043e955
mov esi, dword [0x470ce8]
mov eax, dword [esp + 0x1c]
push edi
lea esi, [eax + esi + 0xa0]
call fcn.0040da30
add dword [esp + 0x2c], 1
add dword [esp + 0x18], 0x1c
jmp 0x408463
lea ecx, [esp + 0x4c4]
push ecx
push str.HardwareID___s
push 0x46fa40
xor eax, eax
call fcn.00431730
add esp, 0xc
mov byte [esp + 0xcd8], 4
cmp dword [esp + 0x10c], 8
jb 0x408618
mov edx, dword [esp + 0xf8]
push edx
call fcn.0043e965
add esp, 4
lea eax, [esp + 0x98]
push eax
mov ecx, eax
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
test eax, eax
jne 0x408271
mov esi, dword [0x470ce8]
xor ebx, ebx
cmp esi, ebx
mov dword [esp + 0x4c], ebx
je 0x408660
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x40866b
call fcn.0043e955
mov esi, dword [0x470ce8]
mov edx, dword [esp + 0x1c]
cmp dword [edx + esi + 0x38], 8
lea eax, [edx + esi + 0x20]
jb 0x40867f
mov eax, dword [eax + 4]
jmp 0x408682
add eax, 4
lea ecx, [esp + 0x4c]
push ecx
push 0x400
lea edx, [esp + 0x4cc]
push edx
lea ecx, [esp + 0x2b8]
push ecx
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetINFClassW]
test eax, eax
jne 0x4086c9
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, ebx
je 0x4086c9
push eax
push str.SetupDiGetINFClass_generated_an_unexpected_error._Ignoring_error
push 0x46fa40
mov eax, 1
call fcn.00431730
add esp, 0xc
lea eax, [esp + 0x4c4]
mov dword [esp + 0x17c], 7
mov dword [esp + 0x178], ebx
mov word [esp + 0x168], bx
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4086f0
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x4c8]
push edx
lea esi, [esp + 0x16c]
call fcn.00404170
push 6
push ebx
push ebx
push ebx
mov byte [esp + 0xce8], 6
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov edi, eax
cmp edi, 0xffffffff
mov dword [esp + 0x2c], edi
jne 0x40875b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, ebx
je 0x40875b
cmp eax, 0x3e5
je 0x40875b
push eax
push str.SetupDiGetClassDevs_generated_an_unexpected_error._Ignoring_error
push 0x46fa40
mov eax, 1
call fcn.00431730
add esp, 0xc
lea eax, [esp + 0x180]
push eax
push ebx
push edi
mov dword [esp + 0x18c], 0x1c
mov dword [esp + 0x20], ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x4093aa
lea ecx, [esp + 0x5c]
mov edx, ecx
lea eax, [esp + 0x19c]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb8], edx
mov dword [esp + 0xa8], eax
lea eax, [esp + 0x19c]
call fcn.00406c80
push 1
lea ecx, [esp + 0x184]
push ecx
push edi
lea ebx, [esp + 0x94]
mov byte [esp + 0xce4], 7
call fcn.0040b4f0
lea edx, [esp + 0x19c]
push edx
mov ebx, eax
mov byte [esp + 0xcdc], 8
call fcn.0040d820
mov byte [esp + 0xcd8], 7
mov esi, dword [esp + 0x8c]
xor ebx, ebx
cmp esi, ebx
je 0x40884a
mov eax, dword [esp + 0x90]
cmp esi, eax
mov dword [esp + 0x50], eax
je 0x408841
add esi, 0x18
lea ecx, [ecx]
cmp dword [esi], 8
jb 0x408821
mov eax, dword [esi - 0x14]
push eax
call fcn.0043e965
add esp, 4
mov dword [esi], 7
mov dword [esi - 4], ebx
mov word [esi - 0x14], bx
add esi, 0x1c
lea eax, [esi - 0x18]
cmp eax, dword [esp + 0x50]
jne 0x408810
mov esi, dword [esp + 0x8c]
push esi
call fcn.0043e965
add esp, 4
push 2
lea ecx, [esp + 0x184]
push ecx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
push edi
lea ebx, [esp + 0x68]
call fcn.0040b4f0
mov byte [esp + 0xcd8], 9
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
cmp ecx, eax
mov esi, eax
jbe 0x408896
call fcn.0043e955
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
cmp ecx, eax
mov ebx, ecx
jbe 0x4088a1
call fcn.0043e955
mov edi, dword [esp + 0x1a4]
cmp dword [esp + 0x1a0], edi
jbe 0x4088b6
call fcn.0043e955
mov edx, dword [esp + 0xb0]
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0xa8]
push esi
push edx
mov edx, dword [esp + 0x5c]
push ebx
push eax
push edi
push ecx
push edx
lea eax, [esp + 0x1b8]
push eax
call fcn.00411970
mov ecx, dword [0x470ce8]
test ecx, ecx
mov byte [esp + 0x23], 0
je 0x408911
mov edx, dword [0x470cec]
sub edx, ecx
mov eax, 0x7e07e07f
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x40891c
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov edi, dword [esp + 0x1c]
mov esi, dword [edi + ecx + 0xb4]
cmp esi, dword [edi + ecx + 0xb8]
lea eax, [edi + ecx + 0xb8]
mov dword [esp + 0x50], eax
jbe 0x408946
call fcn.0043e955
mov ecx, dword [0x470ce8]
test ecx, ecx
mov dword [esp + 0x84], esi
je 0x408970
mov edx, dword [0x470cec]
sub edx, ecx
mov eax, 0x7e07e07f
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x40897b
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov esi, dword [edi + ecx + 0x94]
cmp esi, dword [edi + ecx + 0x98]
lea eax, [edi + ecx + 0x98]
mov dword [esp + 0x74], eax
jbe 0x4089a1
call fcn.0043e955
mov ecx, dword [0x470ce8]
test ecx, ecx
mov dword [esp + 0x70], esi
je 0x4089c8
mov edx, dword [0x470cec]
sub edx, ecx
mov eax, 0x7e07e07f
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x4089d3
call fcn.0043e955
mov ecx, dword [0x470ce8]
lea esi, [edi + ecx + 0xa0]
mov edi, dword [esi + 4]
cmp edi, dword [esi + 8]
jbe 0x4089ed
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov ebx, edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], ebx
test ecx, ecx
je 0x408a1a
mov edx, dword [0x470cec]
sub edx, ecx
mov eax, 0x7e07e07f
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x408a25
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov edx, dword [esp + 0x1c]
mov edi, dword [edx + ecx + 0xa8]
cmp dword [edx + ecx + 0xa4], edi
lea esi, [edx + ecx + 0xa0]
jbe 0x408a4b
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x408a57
cmp eax, esi
je 0x408a66
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov eax, dword [esp + 0x24]
cmp ebx, edi
je 0x4092ea
test eax, eax
jne 0x408a7b
call fcn.0043e955
mov eax, dword [esp + 0x24]
cmp ebx, dword [eax + 8]
jb 0x408a85
call fcn.0043e955
mov ecx, dword [ebx + 0x18]
cmp ecx, 8
lea edi, [ebx + 4]
jb 0x408a98
mov edx, dword [edi]
mov dword [esp + 0x18], edx
jmp 0x408a9e
mov edx, edi
mov dword [esp + 0x18], edi
test edx, edx
je 0x408ac6
cmp ecx, 8
jb 0x408aab
mov eax, dword [edi]
jmp 0x408aad
mov eax, edi
cmp eax, edx
ja 0x408ac6
cmp ecx, 8
jb 0x408aba
mov eax, dword [edi]
jmp 0x408abc
mov eax, edi
mov ecx, dword [ebx + 0x14]
lea eax, [eax + ecx*2]
cmp edx, eax
jbe 0x408acb
call fcn.0043e955
mov ecx, dword [esp + 0x24]
cmp ebx, dword [ecx + 8]
jb 0x408ad9
call fcn.0043e955
mov edx, dword [ebx + 0x18]
cmp edx, 8
jb 0x408ae5
mov ecx, dword [edi]
jmp 0x408ae7
mov ecx, edi
mov esi, dword [esp + 0x28]
mov eax, dword [esi + 0x14]
add eax, eax
lea ebx, [eax + ecx]
test ebx, ebx
mov dword [esp + 0x54], ebx
je 0x408b1b
cmp edx, 8
jb 0x408b04
mov ecx, dword [edi]
jmp 0x408b06
mov ecx, edi
cmp ecx, ebx
ja 0x408b1b
cmp edx, 8
jb 0x408b13
mov ecx, dword [edi]
jmp 0x408b15
mov ecx, edi
add eax, ecx
cmp ebx, eax
jbe 0x408b20
call fcn.0043e955
mov edx, dword [esp + 0x24]
cmp esi, dword [edx + 8]
jb 0x408b2e
call fcn.0043e955
mov ecx, dword [esi + 0x18]
cmp ecx, 8
jb 0x408b3a
mov esi, dword [edi]
jmp 0x408b3c
mov esi, edi
test esi, esi
je 0x408b68
cmp ecx, 8
jb 0x408b49
mov eax, dword [edi]
jmp 0x408b4b
mov eax, edi
cmp eax, esi
ja 0x408b68
cmp ecx, 8
jb 0x408b58
mov eax, dword [edi]
jmp 0x408b5a
mov eax, edi
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x14]
lea eax, [eax + edx*2]
cmp esi, eax
jbe 0x408b6d
call fcn.0043e955
mov eax, ebx
sub eax, esi
sar eax, 1
cmp dword [esp + 0x28], 0xfffffffe
je 0x408bb5
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x18]
cmp edx, 8
jb 0x408b8a
mov ecx, dword [edi]
jmp 0x408b8c
mov ecx, edi
mov ebx, dword [esp + 0x18]
lea eax, [ebx + eax*2]
mov ebx, dword [esp + 0x28]
mov ebx, dword [ebx + 0x14]
lea ecx, [ecx + ebx*2]
cmp eax, ecx
ja 0x408bac
cmp edx, 8
jb 0x408ba8
mov edi, dword [edi]
cmp eax, edi
jae 0x408bb1
call fcn.0043e955
mov ebx, dword [esp + 0x54]
cmp esi, ebx
je 0x408bd7
mov edi, dword [esp + 0x18]
sub edi, esi
nop
movzx edx, word [esi]
push edx
call fcn.0043f37c
mov word [edi + esi], ax
add esi, 2
add esp, 4
cmp esi, ebx
jne 0x408bc0
mov esi, dword [esp + 0x1a0]
cmp esi, dword [esp + 0x1a4]
jbe 0x408bec
call fcn.0043e955
lea eax, [esp + 0x19c]
mov edi, eax
mov dword [esp + 0x78], edi
mov ebx, dword [esp + 0x1a4]
cmp dword [esp + 0x1a0], ebx
jbe 0x408c0e
call fcn.0043e955
test edi, edi
je 0x408c1d
lea eax, [esp + 0x19c]
cmp edi, eax
je 0x408c22
call fcn.0043e955
cmp esi, ebx
je 0x409290
mov edi, dword [esp + 0x78]
test edi, edi
jne 0x408c37
call fcn.0043e955
cmp esi, dword [edi + 8]
jb 0x408c41
call fcn.0043e955
mov edx, dword [esi + 0x18]
cmp edx, 8
lea ebx, [esi + 4]
jb 0x408c54
mov ecx, dword [ebx]
mov dword [esp + 0x18], ecx
jmp 0x408c5a
mov ecx, ebx
mov dword [esp + 0x18], ebx
test ecx, ecx
je 0x408c82
cmp edx, 8
jb 0x408c67
mov eax, dword [ebx]
jmp 0x408c69
mov eax, ebx
cmp eax, ecx
ja 0x408c82
cmp edx, 8
jb 0x408c76
mov eax, dword [ebx]
jmp 0x408c78
mov eax, ebx
mov edx, dword [esi + 0x14]
lea eax, [eax + edx*2]
cmp ecx, eax
jbe 0x408c87
call fcn.0043e955
cmp esi, dword [edi + 8]
jb 0x408c91
call fcn.0043e955
mov edi, dword [esi + 0x18]
cmp edi, 8
jb 0x408c9d
mov ecx, dword [ebx]
jmp 0x408c9f
mov ecx, ebx
mov eax, dword [esi + 0x14]
add eax, eax
add ecx, eax
mov dword [esp + 0x54], ecx
je 0x408ccc
cmp edi, 8
jb 0x408cb5
mov edx, dword [ebx]
jmp 0x408cb7
mov edx, ebx
cmp edx, ecx
ja 0x408ccc
cmp edi, 8
jb 0x408cc4
mov edx, dword [ebx]
jmp 0x408cc6
mov edx, ebx
add eax, edx
cmp ecx, eax
jbe 0x408cd1
call fcn.0043e955
mov ecx, dword [esp + 0x78]
cmp esi, dword [ecx + 8]
jb 0x408cdf
call fcn.0043e955
mov ecx, dword [esi + 0x18]
cmp ecx, 8
jb 0x408ceb
mov edi, dword [ebx]
jmp 0x408ced
mov edi, ebx
test edi, edi
je 0x408d11
cmp ecx, 8
jb 0x408cfa
mov eax, dword [ebx]
jmp 0x408cfc
mov eax, ebx
cmp eax, edi
ja 0x408d11
cmp ecx, 8
jb 0x408d07
mov ebx, dword [ebx]
mov edx, dword [esi + 0x14]
lea eax, [ebx + edx*2]
cmp edi, eax
jbe 0x408d16
call fcn.0043e955
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x54]
push ecx
push esi
push edx
push esi
push edi
push esi
lea eax, [esp + 0xe0]
call fcn.004110d0
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add esp, 0x18
cmp edi, dword [eax + 8]
jb 0x408d45
call fcn.0043e955
mov ecx, dword [esp + 0x78]
cmp esi, dword [ecx + 8]
jb 0x408d53
call fcn.0043e955
cmp dword [edi + 0x18], 8
mov ebx, dword [edi + 0x14]
lea eax, [edi + 4]
jb 0x408d61
mov eax, dword [eax]
push eax
xor eax, eax
mov edx, esi
call fcn.00403570
cmp eax, 0xffffffff
jne 0x408d8a
mov edx, dword [esp + 0x78]
cmp esi, dword [edx + 8]
jb 0x408d7e
call fcn.0043e955
mov edi, dword [esp + 0x78]
add esi, 0x1c
jmp 0x408bf9
mov esi, dword [0x470ce8]
test esi, esi
mov ebx, dword [esp + 0x10]
je 0x408db5
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x408dc0
call fcn.0043e955
mov esi, dword [0x470ce8]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov byte [eax + esi + 0xf0], 1
cmp edi, dword [ecx + 8]
jb 0x408dde
call fcn.0043e955
cmp dword [edi + 0x18], 8
jb 0x408de9
mov eax, dword [edi + 4]
jmp 0x408dec
lea eax, [edi + 4]
push eax
push str.Matched_HardwareID___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x7c]
add esp, 0xc
cmp eax, dword [edx]
jb 0x408e15
call fcn.0043e955
mov esi, dword [0x470ce8]
test esi, esi
je 0x408e3c
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x408e47
call fcn.0043e955
mov esi, dword [0x470ce8]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x1c]
push ecx
lea esi, [edx + esi + 0xc0]
call fcn.0040da30
mov eax, dword [esp + 0x24]
cmp edi, dword [eax + 8]
jb 0x408e6a
call fcn.0043e955
mov esi, dword [0x470ce8]
test esi, esi
je 0x408e91
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x408e9c
call fcn.0043e955
mov esi, dword [0x470ce8]
mov ecx, dword [esp + 0x1c]
push edi
lea esi, [ecx + esi + 0xd0]
call fcn.0040da30
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x50]
cmp edi, dword [edx]
jb 0x408ec1
call fcn.0043e955
mov esi, dword [0x470ce8]
test esi, esi
je 0x408ee8
mov ecx, dword [0x470cec]
sub ecx, esi
mov eax, 0x7e07e07f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x408ef3
call fcn.0043e955
mov esi, dword [0x470ce8]
mov eax, dword [esp + 0x1c]
push edi
lea esi, [eax + esi + 0xe0]
call fcn.0040da30
xor eax, eax
mov byte [esp + 0x23], 1
mov dword [esp + 0x10c], 7
mov dword [esp + 0x108], eax
mov word [esp + 0xf8], ax
lea ecx, [esp + 0x180]
push ecx
mov ecx, dword [esp + 0x30]
lea ebx, [esp + 0x114]
mov byte [esp + 0xcdc], 0xa
call fcn.0040b380
push 0xffffffffffffffff
xor edi, edi
push edi
lea ecx, [esp + 0xfc]
mov byte [esp + 0xce0], 0xb
call fcn.004040c0
mov byte [esp + 0xcd8], 0xa
cmp dword [esp + 0x128], 8
jb 0x408f80
mov edx, dword [esp + 0x114]
push edx
call fcn.0043e965
add esp, 4
cmp dword [esp + 0x108], edi
je 0x40926e
mov eax, dword [esp + 0xf8]
mov ebx, 8
cmp dword [esp + 0x10c], ebx
jae 0x408fa9
lea eax, [esp + 0xf8]
push eax
push str.Installed_Driver___s
push 0x46fa40
xor eax, eax
call fcn.00431730
mov eax, 7
add esp, 0xc
mov byte [esp + 0x1ac], 1
mov dword [esp + 0x128], eax
mov dword [esp + 0x124], edi
mov word [esp + 0x114], di
mov byte [esp + 0xcd8], 0xc
push 0x27
push str.SystemCurrentControlSetControlClass_
lea esi, [esp + 0x134]
mov dword [esp + 0x14c], eax
mov dword [esp + 0x148], edi
mov word [esp + 0x138], di
call fcn.00404170
push edi
lea eax, [esp + 0xf8]
push eax
or eax, 0xffffffff
mov byte [esp + 0xce0], 0xd
call fcn.004048e0
mov byte [esp + 0xcd8], 0xe
cmp dword [esp + 0x144], ebx
mov eax, dword [esp + 0x130]
jae 0x40904a
lea eax, [esp + 0x130]
lea ecx, [esp + 0x30]
push ecx
push 0xf003f
push edi
push eax
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, edi
jne 0x40913c
lea edx, [esp + 0x110]
push edx
lea eax, [esp + 0x34]
push eax
mov eax, str.InfPath
call fcn.00431c50
lea ecx, [esp + 0x204]
push ecx
lea edx, [esp + 0x34]
push edx
mov eax, str.DriverVersion
call fcn.00431c50
lea eax, [esp + 0x1e8]
push eax
lea ecx, [esp + 0x34]
push ecx
mov eax, str.DriverDate
call fcn.00431c50
lea edx, [esp + 0x220]
push edx
lea eax, [esp + 0x34]
push eax
mov eax, str.ProviderName
call fcn.00431c50
lea ecx, [esp + 0x23c]
push ecx
lea edx, [esp + 0x34]
push edx
mov eax, str.InfSection
call fcn.00431c50
lea eax, [esp + 0x258]
push eax
lea ecx, [esp + 0x34]
push ecx
mov eax, str.DriverDesc
call fcn.00431c50
lea edx, [esp + 0x274]
push edx
lea eax, [esp + 0x34]
push eax
mov eax, str.Driver
call fcn.00431c50
lea ecx, [esp + 0x1cc]
push ecx
lea edx, [esp + 0x34]
push edx
mov eax, str.InfPath
call fcn.00431c50
mov eax, dword [esp + 0x30]
cmp eax, edi
je 0x409138
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esp + 0x30], edi
cmp dword [esp + 0x124], edi
je 0x4091a5
push 0x104
lea eax, [esp + 0x2c0]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea eax, [esp + 0x2bc]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x409162
sub eax, edx
sar eax, 1
push eax
lea ecx, [esp + 0x2c0]
push ecx
lea esi, [esp + 0x1b8]
call fcn.00404170
push 5
push str.inf_
mov ecx, esi
call fcn.00403ff0
push edi
lea edx, [esp + 0x114]
push edx
or eax, 0xffffffff
call fcn.004048e0
cmp dword [esp + 0x1c8], ebx
mov eax, dword [esp + 0x1b4]
jae 0x4091bc
lea eax, [esp + 0x1b4]
push edi
push 2
push edi
push eax
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x40920a
mov esi, str.Name
mov edi, str.PackageInfo
mov edx, ebx
call fcn.00409650
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4091e4
sub ecx, esi
sar ecx, 1
push ecx
push eax
lea esi, [esp + 0x298]
call fcn.00404170
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
xor edi, edi
mov eax, dword [esp + 0x30]
cmp eax, edi
je 0x409219
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, 8
cmp dword [esp + 0x144], esi
mov dword [esp + 0x30], edi
jb 0x40923b
mov eax, dword [esp + 0x130]
push eax
call fcn.0043e965
add esp, 4
cmp dword [esp + 0x128], esi
mov dword [esp + 0x144], 7
mov dword [esp + 0x140], edi
mov word [esp + 0x130], di
jb 0x40926e
mov ecx, dword [esp + 0x114]
push ecx
call fcn.0043e965
add esp, 4
mov byte [esp + 0xcd8], 9
cmp dword [esp + 0x10c], 8
jb 0x409290
mov edx, dword [esp + 0xf8]
push edx
call fcn.0043e965
add esp, 4
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
cmp ecx, dword [eax]
jb 0x4092a1
call fcn.0043e955
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov esi, 0x1c
add dword [esp + 0x70], esi
cmp eax, dword [edx + 8]
jb 0x4092bc
call fcn.0043e955
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x84]
add dword [esp + 0x28], esi
cmp edx, dword [ecx]
jb 0x4092d4
call fcn.0043e955
add dword [esp + 0x84], esi
mov ecx, dword [0x470ce8]
mov ebx, dword [esp + 0x28]
jmp 0x4089f7
cmp byte [esp + 0x23], 0
je 0x409337
test ecx, ecx
je 0x409314
mov edx, dword [0x470cec]
sub edx, ecx
mov eax, 0x7e07e07f
imul edx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x10], eax
jb 0x40931f
call fcn.0043e955
mov ecx, dword [0x470ce8]
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x19c]
push eax
lea esi, [edx + ecx + 0xf4]
call fcn.0040dbf0
mov eax, dword [esp + 0x60]
test eax, eax
je 0x40935d
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x64]
push ecx
call fcn.00411dd0
mov edx, dword [esp + 0x64]
add esp, 4
push edx
call fcn.0043e965
add esp, 4
xor eax, eax
lea esi, [esp + 0x19c]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov byte [esp + 0xcd8], 6
call fcn.004094c0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x180]
add eax, 1
push ecx
push eax
push edx
mov dword [esp + 0x20], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
mov edi, dword [esp + 0x2c]
jne 0x4087a4
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov eax, dword [esp + 0x38]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
sub dword [0x46fa60], 1
mov esi, 8
cmp dword [esp + 0x17c], esi
jb 0x4093e1
mov ecx, dword [esp + 0x168]
push ecx
call fcn.0043e965
add esp, 4
xor eax, eax
mov byte [esp + 0xcd8], 1
cmp dword [esp + 0xf0], esi
mov dword [esp + 0x17c], 7
mov dword [esp + 0x178], eax
mov word [esp + 0x168], ax
jb 0x40941e
mov edx, dword [esp + 0xdc]
push edx
call fcn.0043e965
add esp, 4
mov esi, dword [esp + 0x10]
add esi, 1
mov ecx, 0x470ce4
mov dword [esp + 0x10], esi
call fcn.0040dca0
cmp esi, eax
jb 0x4078d0
xor esi, esi
push esi
call fcn.00436e10
mov eax, dword [esp + 0x44]
add esp, 4
cmp eax, esi
je 0x40946c
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x44]
push ecx
call fcn.00411dd0
mov edx, dword [esp + 0x44]
add esp, 4
push edx
call fcn.0043e965
add esp, 4
cmp dword [esp + 0x160], 8
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
jb 0x409492
mov eax, dword [esp + 0x14c]
push eax
call fcn.0043e965
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0xcd0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xcb8]
xor ecx, esp
call fcn.0043d02a
mov esp, ebp
pop ebp
ret