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

Disassembly:
sub esp, 0x240
mov eax, dword [0x49a134]
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 0x410d53
push ebp
call fcn.0040b350
add esp, 4
test eax, eax
jne 0x410d53
push esi
cmp dword [0x49c6f4], ebx
jne 0x410894
push 0x4897d4
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
jne 0x410857
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 0x41083c
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.0042e063
add esp, 0x240
ret
cmp dword [0x49c6f4], ebx
jne 0x410874
push str.IsWow64Process
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x49c6f4], eax
test eax, eax
je 0x41081a
push 0x49c6f0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov esi, dword [0x49c6f4]
mov ecx, esi
push eax
call dword [0x485320]
call esi
test eax, eax
je 0x41081a
mov eax, dword [0x49c6f0]
push 0x42ea
mov dword [esp + 0x18], eax
call fcn.0040e470
add esp, 4
test eax, eax
je 0x410a51
push 0x208
lea eax, [esp + 0x46]
push 0
push eax
call fcn.0042fc00
xor eax, eax
add esp, 0xc
mov word [esp + 0x40], ax
xor edi, edi
mov eax, dword [str.nvldumdx.dll]
test eax, eax
je 0x41096b
nop dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x41093c
push 0x104
lea ecx, [esp + 0x44]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov esi, eax
test esi, esi
je 0x41093c
mov ax, word [esp + 0x40]
cmp ax, 0x5c
je 0x410950
cmp ax, 0x2f
je 0x410950
movzx eax, ax
push eax
call fcn.0045a070
add esp, 4
test eax, eax
je 0x41093c
cmp word [esp + 0x42], 0x3a
jne 0x41093c
mov ax, word [esp + 0x44]
cmp ax, 0x5c
je 0x410950
cmp ax, 0x2f
je 0x410950
mov eax, dword [edi*4 + 0x4991ac]
inc edi
test eax, eax
jne 0x4108e0
jmp 0x410964
cmp word [esp + esi*2 + 0x40], 0x5c
je 0x41095d
sub esi, 1
jne 0x410950
xor eax, eax
mov word [esp + esi*2 + 0x40], ax
cmp word [esp + 0x40], bx
jne 0x410978
lea eax, [esp + 0x40]
push eax
call fcn.0040c4a0
add esp, 4
lea ecx, [esp + 0x40]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410980
sub ecx, edx
mov edx, ebp
sar ecx, 1
lea esi, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x410994
sub edx, esi
sar edx, 1
test ecx, ecx
je 0x4109c1
cmp word [esp + ecx*2 + 0x3e], 0x5c
je 0x4109c1
test edx, edx
je 0x4109c1
cmp word [ebp], 0x5c
je 0x4109c1
mov ebp, 1
jmp 0x4109c3
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 0x410a32
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.0040f460
test eax, eax
js 0x410a26
test ebp, ebp
je 0x410a05
push 0x48909c
push esi
push edi
lfence
call fcn.0040f3c0
test eax, eax
js 0x410a26
lfence
mov ebp, dword [esp + 0x20]
push ebp
push esi
push edi
call fcn.0040f3c0
test eax, eax
jns 0x410a36
push edi
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor edi, edi
jmp 0x410a36
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 0x410a4a
test al, 0x50
je 0x410d33
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
call fcn.00410da0
add esp, 4
mov dword [esp + 0x10], eax
xor edi, edi
cmp eax, ebx
je 0x410d33
mov esi, ebp
lea ecx, [esi + 2]
nop
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x410a70
sub esi, ecx
push ebp
sar esi, 1
call fcn.0040c130
add esp, 4
lea edx, [eax + 2]
nop dword [eax + eax]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x410a90
sub eax, edx
sar eax, 1
sub eax, 0
je 0x410c83
sub eax, 1
je 0x410c01
mov ecx, ebp
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x410ab6
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 0x410ae5
push dword [esp + 0x10]
xor edi, edi
jmp 0x41081c
push ebp
push esi
push ebx
call fcn.0040f5c0
test eax, eax
jns 0x410afd
push ebx
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor ebx, ebx
xor edi, edi
test ebx, ebx
je 0x410d33
push ebx
call fcn.0040c130
mov esi, eax
push str..dll
push esi
call fcn.0045a77a
add esp, 0xc
test eax, eax
je 0x410b37
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x410b37
push eax
push ebx
call fcn.0040b9c0
add esp, 8
mov edi, eax
push str..sys
push esi
call fcn.0045a77a
add esp, 8
test eax, eax
je 0x410ce7
test edi, edi
jne 0x410d33
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, dword [esp + 0x14]
test eax, eax
jne 0x410bc5
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.0040be10
mov edi, eax
add esp, 0x10
test edi, edi
jne 0x410d33
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x410cef
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.0040bc00
add esp, 0xc
mov edi, eax
jmp 0x410ceb
lea edi, [esi - 1]
test edi, edi
js 0x410afb
mov esi, ebp
lfence
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x410c14
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 0x410c46
push dword [esp + 0x10]
xor edi, edi
jmp 0x41081c
test esi, esi
je 0x410af1
cmp esi, 0x7fffffff
ja 0x410c71
cmp edi, 0x7ffffffe
ja 0x410c79
push edi
push ebp
push 0
push esi
push ebx
lfence
call fcn.0040f630
jmp 0x410aed
test esi, esi
je 0x410af1
xor eax, eax
mov word [ebx], ax
jmp 0x410af1
lea esi, [esi*2 + 0xa]
push esi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ebx, eax
test ebx, ebx
je 0x410afd
push ebp
push esi
push ebx
call fcn.0040f460
lfence
test eax, eax
jns 0x410cbe
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
push dword [esp + 0x10]
xor edi, edi
jmp 0x41081c
push str..dll
push esi
push ebx
call fcn.0040f3c0
test eax, eax
jns 0x410afd
push ebx
lfence
call dword [sym.imp.KERNEL32.dll_LocalFree]
push dword [esp + 0x10]
xor edi, edi
jmp 0x41081c
mov esi, dword [esp + 0x14]
test edi, edi
jne 0x410d33
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x410d33
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.0040be10
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 0x41082a
push 0
jmp 0x410836
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.0042e063
add esp, 0x240
ret