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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
sub rsp, 0x60
xor r12d, r12d
mov rdi, rcx
xor ecx, ecx
mov rbp, r12
mov rbx, r12
mov rsi, r12
call qword [sym.imp.KERNEL32.dll_SetLastError]
test rdi, rdi
je 0x140004e80
mov rcx, rdi
call fcn.1400024b0
test eax, eax
jne 0x140004e80
mov ecx, 0x42ea
call fcn.1400037a0
test eax, eax
je 0x140004c87
call fcn.140002570
cmp word [rax], bx
jne 0x140004c57
call fcn.140003280
mov rdx, rdi
mov rcx, rax
call fcn.140004920
mov rcx, rax
mov rsi, rax
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140004c7b
test al, 0x50
je 0x140004e44
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rsi, r12
xor ecx, ecx
call fcn.140004a30
mov rbp, rax
test rax, rax
je 0x140004e44
mov rcx, rdi
call fcn.140003bc0
mov rbx, rax
test rax, rax
je 0x140004e44
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, rbx
repne scasw ax, word [rdi]
lea r8d, [rax + 0x2e]
not rcx
lea rdi, [rbx + rcx*2 - 2]
mov rcx, rdi
cmp rbx, rdi
jae 0x140004cea
mov edx, 0x5c
movzx eax, word [rcx]
cmp dx, ax
je 0x140004cea
cmp r8w, ax
je 0x140004cea
sub rcx, 2
cmp rbx, rcx
jb 0x140004cd3
cmp r8w, word [rcx]
lea rdx, str..dll
cmove rdi, rcx
mov rcx, rdi
call fcn.1400c1a28
test eax, eax
je 0x140004d1c
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x140004d1c
xor edx, edx
mov rcx, rbx
call fcn.140003ee0
mov rsi, rax
lea rdx, str..sys
mov rcx, rdi
call fcn.1400c1a28
test eax, eax
je 0x140004df9
test rsi, rsi
jne 0x140004e44
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x140004dbb
lea rax, str.UserModeDriverNameWow
lea r9, [rsp + 0x40]
mov r8, rbp
mov qword [rsp + 0x20], rax
lea rax, str.OpenGLDriverNameWow
mov rdx, 0xffffffff80000002
mov qword [rsp + 0x28], rax
lea rax, str.UserModeDListDriverNameWow
mov rcx, rbx
mov qword [rsp + 0x30], rax
lea rax, str.UserModeDriverName
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x40], rax
lea rax, str.OpenGLDriverName
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x48], rax
lea rax, str.UserModeDListDriverName
mov qword [rsp + 0x50], rax
call fcn.140004190
mov rsi, rax
test rax, rax
jne 0x140004e44
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x140004dfe
lea rax, str.SOFTWAREKhronosVulkanDrivers
lea r8, [rsp + 0x40]
mov rdx, 0xffffffff80000002
mov qword [rsp + 0x40], rax
lea rax, str.SOFTWAREKhronosOpenCLVendors
mov rcx, rbx
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], r12
call fcn.1400043a0
mov rsi, rax
test rsi, rsi
jne 0x140004e44
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x140004e44
lea rax, str.DriverSupportModulesWow
lea r9, [rsp + 0x20]
mov r8, rbp
mov qword [rsp + 0x40], rax
lea rax, str.DriverSupportModules
mov rdx, 0xffffffff80000002
mov rcx, rbx
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rax
call fcn.140004190
mov rsi, rax
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
test rsi, rsi
je 0x140004e68
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rax, rsi
jmp 0x140004e8d
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x140004e7b
lea ecx, [rax + 0x7e]
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rax, rsi
jmp 0x140004e8d
mov ecx, 0xa0
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop r12
ret