Function at 0x410770
Capabilities:
Check if file exists
Get file attributes

Disassembly:
sub esp, 0x240
mov eax, dword [0x49a11c]
xor eax, esp
mov dword [esp + 0x23c], eax
push ebx
push ebp
mov ebp, dword [esp + 0x24c]
xor ebx, ebx
push edi
xor edi, edi
mov dword [esp + 0x1c], ebp
push edi
mov dword [esp + 0x10], 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
test ebp, ebp
je 0x410d13
push ebp
call fcn.0040b320
add esp, 4
test eax, eax
jne 0x410d13
push esi
cmp dword [0x49c6d4], ebx
jne 0x410854
push 0x489734
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
jne 0x410817
push 0
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
call dword [sym.imp.KERNEL32.dll_LocalFree]
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x4107fc
push 0x7e
call dword [sym.imp.KERNEL32.dll_SetLastError]
pop esi
mov eax, edi
pop edi
pop ebp
pop ebx
mov ecx, dword [esp + 0x23c]
xor ecx, esp
call fcn.0042e033
add esp, 0x240
ret
cmp dword [0x49c6d4], ebx
jne 0x410834
push str.IsWow64Process
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x49c6d4], eax
test eax, eax
je 0x4107da
push 0x49c6d0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov esi, dword [0x49c6d4]
mov ecx, esi
push eax
call dword [0x485320]
call esi
test eax, eax
je 0x4107da
mov eax, dword [0x49c6d0]
push 0x42ea
mov dword [esp + 0x18], eax
call fcn.0040e430
add esp, 4
test eax, eax
je 0x410a11
push 0x208
lea eax, [esp + 0x46]
push 0
push eax
call fcn.0042fbd0
xor eax, eax
add esp, 0xc
mov word [esp + 0x40], ax
xor edi, edi
mov eax, dword [str.nvldumdx.dll]
test eax, eax
je 0x41092b
nop dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x4108fc
push 0x104
lea ecx, [esp + 0x44]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov esi, eax
test esi, esi
je 0x4108fc
mov ax, word [esp + 0x40]
cmp ax, 0x5c
je 0x410910
cmp ax, 0x2f
je 0x410910
movzx eax, ax
push eax
call fcn.0045a040
add esp, 4
test eax, eax
je 0x4108fc
cmp word [esp + 0x42], 0x3a
jne 0x4108fc
mov ax, word [esp + 0x44]
cmp ax, 0x5c
je 0x410910
cmp ax, 0x2f
je 0x410910
mov eax, dword [edi*4 + 0x499194]
inc edi
test eax, eax
jne 0x4108a0
jmp 0x410924
cmp word [esp + esi*2 + 0x40], 0x5c
je 0x41091d
sub esi, 1
jne 0x410910
xor eax, eax
mov word [esp + esi*2 + 0x40], ax
cmp word [esp + 0x40], bx
jne 0x410938
lea eax, [esp + 0x40]
push eax
call fcn.0040c460
add esp, 4
lea ecx, [esp + 0x40]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410940
sub ecx, edx
mov edx, ebp
sar ecx, 1
lea esi, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x410954
sub edx, esi
sar edx, 1
test ecx, ecx
je 0x410981
cmp word [esp + ecx*2 + 0x3e], 0x5c
je 0x410981
test edx, edx
je 0x410981
cmp word [ebp], 0x5c
je 0x410981
mov ebp, 1
jmp 0x410983
xor ebp, ebp
lea eax, [edx + ebp]
add eax, ecx
lea esi, [eax*2 + 2]
push esi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edi, eax
test edi, edi
je 0x4109f2
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.0040f420
test eax, eax
js 0x4109e6
test ebp, ebp
je 0x4109c5
push 0x488ffc
push esi
push edi
lfence
call fcn.0040f380
test eax, eax
js 0x4109e6
lfence
mov ebp, dword [esp + 0x20]
push ebp
push esi
push edi
call fcn.0040f380
test eax, eax
jns 0x4109f6
push edi
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor edi, edi
jmp 0x4109f6
push edi
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor edi, edi
mov ebp, dword [esp + 0x20]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x410a0a
test al, 0x50
je 0x410cf3
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
call fcn.00410d60
add esp, 4
mov dword [esp + 0x10], eax
xor edi, edi
cmp eax, ebx
je 0x410cf3
mov esi, ebp
lea ecx, [esi + 2]
nop
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x410a30
sub esi, ecx
push ebp
sar esi, 1
call fcn.0040c0f0
add esp, 4
lea edx, [eax + 2]
nop dword [eax + eax]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x410a50
sub eax, edx
sar eax, 1
sub eax, 0
je 0x410c43
sub eax, 1
je 0x410bc1
mov ecx, ebp
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410a76
sub ecx, edx
sar ecx, 1
lea esi, [ecx + 1]
lea eax, [esi + esi]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ebx, eax
test ebx, ebx
jne 0x410aa5
push dword [esp + 0x10]
xor edi, edi
jmp 0x4107dc
push ebp
push esi
push ebx
call fcn.0040f580
test eax, eax
jns 0x410abd
push ebx
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor ebx, ebx
xor edi, edi
test ebx, ebx
je 0x410cf3
push ebx
call fcn.0040c0f0
mov esi, eax
push str..dll
push esi
call fcn.0045a74a
add esp, 0xc
test eax, eax
je 0x410af7
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x410af7
push eax
push ebx
call fcn.0040b990
add esp, 8
mov edi, eax
push str..sys
push esi
call fcn.0045a74a
add esp, 8
test eax, eax
je 0x410ca7
test edi, edi
jne 0x410cf3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, dword [esp + 0x14]
test eax, eax
jne 0x410b85
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0x30]
mov dword [esp + 0x3c], eax
test esi, esi
lea eax, [esp + 0x20]
mov dword [esp + 0x20], str.UserModeDriverNameWow
cmove eax, ecx
mov dword [esp + 0x24], str.OpenGLDriverNameWow
push eax
push dword [esp + 0x14]
mov dword [esp + 0x30], str.UserModeDListDriverNameWow
push 0x80000002
push ebx
mov dword [esp + 0x40], str.UserModeDriverName
mov dword [esp + 0x44], str.OpenGLDriverName
mov dword [esp + 0x48], str.UserModeDListDriverName
call fcn.0040bdd0
mov edi, eax
add esp, 0x10
test edi, edi
jne 0x410cf3
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x410caf
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x14]
push eax
push 0x80000002
push ebx
mov dword [esp + 0x20], str.SOFTWAREKhronosVulkanDrivers
mov dword [esp + 0x24], str.SOFTWAREKhronosOpenCLVendors
call fcn.0040bbd0
add esp, 0xc
mov edi, eax
jmp 0x410cab
lea edi, [esi - 1]
test edi, edi
js 0x410abb
mov esi, ebp
lfence
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x410bd4
sub esi, ecx
sar esi, 1
cmp edi, esi
cmovb esi, edi
inc esi
lea eax, [esi + esi]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ebx, eax
test ebx, ebx
jne 0x410c06
push dword [esp + 0x10]
xor edi, edi
jmp 0x4107dc
test esi, esi
je 0x410ab1
cmp esi, 0x7fffffff
ja 0x410c31
cmp edi, 0x7ffffffe
ja 0x410c39
push edi
push ebp
push 0
push esi
push ebx
lfence
call fcn.0040f5f0
jmp 0x410aad
test esi, esi
je 0x410ab1
xor eax, eax
mov word [ebx], ax
jmp 0x410ab1
lea esi, [esi*2 + 0xa]
push esi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ebx, eax
test ebx, ebx
je 0x410abd
push ebp
push esi
push ebx
call fcn.0040f420
lfence
test eax, eax
jns 0x410c7e
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
push dword [esp + 0x10]
xor edi, edi
jmp 0x4107dc
push str..dll
push esi
push ebx
call fcn.0040f380
test eax, eax
jns 0x410abd
push ebx
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
push dword [esp + 0x10]
xor edi, edi
jmp 0x4107dc
mov esi, dword [esp + 0x14]
test edi, edi
jne 0x410cf3
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x410cf3
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x20]
mov dword [esp + 0x24], eax
test esi, esi
lea eax, [esp + 0x14]
mov dword [esp + 0x14], str.DriverSupportModulesWow
cmove eax, ecx
mov dword [esp + 0x20], str.DriverSupportModules
push eax
push dword [esp + 0x14]
push 0x80000002
push ebx
call fcn.0040bdd0
add esp, 0x10
mov edi, eax
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_LocalFree]
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
test edi, edi
je 0x4107ea
push 0
jmp 0x4107f6
push 0xa0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [esp + 0x248]
xor eax, eax
pop edi
pop ebp
pop ebx
xor ecx, esp
call fcn.0042e033
add esp, 0x240
ret