Function at 0x6fd91ba0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x6a4
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x650], 0xffffffff
mov esi, ebx
and esi, 0xfffffff8
test byte [section..data], 8
jne 0x6fd91c21
test esi, esi
je 0x6fd91c9f
mov dword [esp], 0x3ec
xor ebx, ebx
xor esi, esi
call sym._SetLastError_4
sub esp, 4
mov eax, dword [ebp - 0x650]
cmp eax, 0xffffffff
je 0x6fd91bf9
mov dword [esp], eax
call dword [sym.imp.setupapi.dll_SetupDiDestroyDeviceInfoList]
sub esp, 4
call sym._GetProcessHeap_0
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._HeapFree_12
mov eax, ebx
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call sym._wine_dbgstr_wn
mov dword [esp + 4], 0xffffffff
mov edi, eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._wine_dbgstr_wn
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], str.UpdateDriverForPlugAndPlayDevicesW__p__s__s_0x_x__p__n
mov dword [esp + 0x10], 0x3a
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
test esi, esi
jne 0x6fd91f63
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], 6
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp], 0
call dword [sym.imp.setupapi.dll_SetupDiGetClassDevsW]
sub esp, 0x10
mov dword [ebp - 0x650], eax
cmp eax, 0xffffffff
je 0x6fd92050
mov dword [ebp - 0x64c], 0x1c
xor esi, esi
mov dword [ebp - 0x67c], 0
mov dword [ebp - 0x674], 0
lea edx, [ebp - 0x64c]
mov dword [esp], eax
mov dword [esp + 8], edx
mov edx, dword [ebp - 0x674]
mov dword [esp + 4], edx
call dword [sym.imp.setupapi.dll_SetupDiEnumDeviceInfo]
sub esp, 0xc
mov ebx, eax
test eax, eax
je 0x6fd9217c
call sym._GetProcessHeap_0
mov dword [esp + 8], esi
xor esi, esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._HeapFree_12
xor eax, eax
mov edi, dword [sym.imp.setupapi.dll_SetupDiGetDeviceRegistryPropertyW]
mov dword [ebp - 0x66c], 0
sub esp, 0xc
jmp 0x6fd91dbb
call sym._GetLastError_0
cmp eax, 2
je 0x6fd91fb0
call sym._GetLastError_0
cmp eax, 0x7a
jne 0x6fd91fc4
call sym._GetProcessHeap_0
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._HeapFree_12
mov ebx, dword [ebp - 0x66c]
sub esp, 0xc
call sym._GetProcessHeap_0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._HeapAlloc_12
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x6fd92013
mov eax, dword [ebp - 0x66c]
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x64c]
lea ecx, [ebp - 0x66c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x650]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp], eax
call edi
sub esp, 0x1c
mov ebx, eax
test eax, eax
je 0x6fd91d51
test esi, esi
je 0x6fd91f51
cmp word [esi], 0
je 0x6fd91f51
mov ebx, dword [sym.imp.msvcrt.dll_wcscmp]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x678], esi
jmp 0x6fd91e39
mov dword [esp], esi
call dword [sym.imp.msvcrt.dll_wcslen]
lea esi, [esi + eax*2 + 2]
cmp word [esi], 0
je 0x6fd92034
mov dword [esp + 4], edi
mov dword [esp], esi
call ebx
test eax, eax
jne 0x6fd91e22
mov esi, dword [ebp - 0x678]
call sym._GetProcessHeap_0
mov dword [esp + 4], 0
mov dword [esp + 8], esi
mov dword [esp], eax
call sym._HeapFree_12
lea eax, [ebp - 0x66c]
mov edi, dword [sym.imp.setupapi.dll_SetupDiGetDeviceInstanceIdW]
sub esp, 0xc
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x64c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x650]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
call edi
sub esp, 0x14
mov ebx, eax
test eax, eax
jne 0x6fd92225
call sym._GetLastError_0
cmp eax, 0x7a
jne 0x6fd92268
mov eax, dword [ebp - 0x66c]
lea ebx, [eax + eax]
call sym._GetProcessHeap_0
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._HeapAlloc_12
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x6fd9223d
mov eax, dword [ebp - 0x66c]
mov dword [esp + 0x10], 0
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x64c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x650]
mov dword [esp], eax
call edi
sub esp, 0x14
mov ebx, eax
test eax, eax
je 0x6fd921fa
test byte [section..data], 8
jne 0x6fd9212f
mov ecx, dword [ebp + 0x10]
xor edx, edx
lea eax, [ebp - 0x668]
call sym._SearchDriver
test eax, eax
jne 0x6fd92098
test byte [section..data], 8
jne 0x6fd92114
add dword [ebp - 0x674], 1
mov eax, dword [ebp - 0x650]
jmp 0x6fd91cf5
test byte [section..data], 8
je 0x6fd91bcf
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], str.Unknown_flags:_0x_08lx_n
mov dword [esp + 0x10], 0x42
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
jmp 0x6fd91bcf
xor esi, esi
add dword [ebp - 0x674], 1
mov eax, dword [ebp - 0x650]
jmp 0x6fd91cf5
test byte [section..data], 8
je 0x6fd91be2
call sym._GetLastError_0
mov dword [esp + 0x14], str.SetupDiGetDeviceRegistryPropertyW___failed_with_error_0x_x_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x6d
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
jmp 0x6fd91be2
test byte [section..data], 8
jne 0x6fd92059
mov dword [esp], 8
xor ebx, ebx
xor esi, esi
call sym._SetLastError_4
sub esp, 4
jmp 0x6fd91be2
mov esi, dword [ebp - 0x678]
add dword [ebp - 0x674], 1
mov eax, dword [ebp - 0x650]
jmp 0x6fd91cf5
xor ebx, ebx
xor esi, esi
jmp 0x6fd91bf9
call sym._GetLastError_0
mov dword [esp + 0x14], 0x6fd9a367
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x75
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
jmp 0x6fd9201c
lea eax, [ebp - 0x668]
mov dword [esp], eax
call sym._InstallCurrentDriver
test eax, eax
je 0x6fd920b9
mov dword [ebp - 0x67c], 1
jmp 0x6fd91f51
call sym._GetLastError_0
cmp eax, 0x522
je 0x6fd920aa
test byte [section..data], 8
je 0x6fd91f51
call sym._GetLastError_0
mov dword [esp + 0x14], str.InstallCurrentDriver___failed_with_error_0x_x_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0xb2
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
jmp 0x6fd91f51
call sym._GetLastError_0
mov dword [esp + 0x14], str.SearchDriver___failed_with_error_0x_x_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0xaa
jmp 0x6fd920eb
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call sym._wine_dbgstr_wn
mov dword [esp + 0x14], str.Trying_to_update_the_driver_of__s_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0xa5
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
jmp 0x6fd91f2c
call sym._GetLastError_0
cmp eax, 0x103
je 0x6fd921b3
test byte [section..data], 8
je 0x6fd91be2
call sym._GetLastError_0
mov dword [esp + 0x14], str.SetupDiEnumDeviceInfo___failed_with_error_0x_x_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x52
jmp 0x6fd91fea
mov eax, dword [ebp - 0x67c]
test eax, eax
jne 0x6fd921e0
test byte [section..data], 8
jne 0x6fd92295
mov dword [esp], 0xe000020b
xor ebx, ebx
call sym._SetLastError_4
sub esp, 4
jmp 0x6fd91be2
mov dword [esp], 0
call sym._SetLastError_4
mov ebx, dword [ebp - 0x67c]
sub esp, 4
jmp 0x6fd91be2
test byte [section..data], 8
je 0x6fd91be2
call sym._GetLastError_0
mov dword [esp + 0x14], str.SetupDiGetDeviceInstanceIdW___failed_with_error_0x_x_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0xa2
jmp 0x6fd91fea
mov dword [esp], 0x1f
xor ebx, ebx
xor esi, esi
call sym._SetLastError_4
sub esp, 4
jmp 0x6fd91be2
test byte [section..data], 8
je 0x6fd9201c
call sym._GetLastError_0
mov dword [esp + 0x14], 0x6fd9a367
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x9c
jmp 0x6fd92072
xor esi, esi
test byte [section..data], 8
je 0x6fd91be2
call sym._GetLastError_0
mov dword [esp + 0x14], str.SetupDiGetDeviceInstanceIdW___failed_with_error_0x_x_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x97
jmp 0x6fd91fea
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call sym._wine_dbgstr_wn
mov dword [esp + 0x14], str.No_device_found_with_HardwareID__s_n
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0xc0
mov dword [esp + 0xc], str.UpdateDriverForPlugAndPlayDevicesW
mov dword [esp + 8], 0x6fd9a071
mov dword [esp + 4], 0x6fd99000
mov dword [esp], 3
call sym._ros_dbg_log
jmp 0x6fd921ca