Function at 0x41fe20
Capabilities:
Check if file exists
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x486f80
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
mov eax, dword [0x4aeda0]
xor eax, esp
mov dword [esp + 0x24], eax
push ebx
push esi
mov eax, dword [0x4aeda0]
xor eax, esp
push eax
lea eax, [esp + 0x38]
mov dword fs:[0], eax
xor ebx, ebx
xor eax, eax
mov dword [esp + 0x2c], 7
mov dword [esp + 0x28], ebx
mov word [esp + 0x18], ax
lea ecx, [esp + 0x14]
mov dword [esp + 0x40], ebx
call fcn.0041fc60
test eax, eax
je 0x41ffa4
mov byte [esp + 0x40], 1
cmp dword [esp + 0x2c], 8
mov eax, dword [esp + 0x18]
jae 0x41fe94
lea eax, [esp + 0x18]
push ebx
push 0x80
push 3
push ebx
push 1
push 1
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [esp + 0x10], esi
cmp esi, 0xffffffff
je 0x41febb
cmp esi, ebx
jne 0x41ff5c
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x41fefe
cmp dword [esp + 0x2c], 8
mov eax, dword [esp + 0x18]
jae 0x41fed5
lea eax, [esp + 0x18]
push eax
push str.GETGUID:no_cached_GUID__S_
push 0x8e
push ecx
call fcn.0041ef10
add esp, 4
push eax
mov ebx, 0x2000040
mov ecx, str..GetGUIDInternal.cpp
call fcn.0041f0d0
add esp, 0x10
jmp 0x41ff31
cmp dword [esp + 0x2c], 8
mov ecx, dword [esp + 0x18]
jae 0x41ff0d
lea ecx, [esp + 0x18]
push ecx
push eax
push str.GETGUID:fail__lu__open_cached_file__S_
push 0x90
call fcn.0041ef10
push eax
mov ebx, 0x2000002
mov ecx, str..GetGUIDInternal.cpp
call fcn.0041f0d0
add esp, 0x14
cmp esi, 0xffffffff
je 0x41ff41
test esi, esi
je 0x41ff41
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x2c], 8
jb 0x41ffb8
mov edx, dword [esp + 0x18]
push edx
call fcn.0045061f
add esp, 4
xor eax, eax
jmp 0x42006f
push ebx
lea eax, [esp + 0x10]
push eax
push 0x24
push edi
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x41ffbf
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.GETGUID:Error__lu__reading_GUID_cache
push 0x9d
push ecx
call fcn.0041ef10
add esp, 4
push eax
mov ebx, 0x2000002
mov ecx, str..GetGUIDInternal.cpp
call fcn.0041f0d0
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x2c], 8
jb 0x41ffb8
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0045061f
add esp, 4
xor eax, eax
jmp 0x42006f
mov eax, dword [esp + 0xc]
cmp eax, 0x24
jae 0x41fff4
push eax
push str.GETGUID:invalid_data_in_GUID_cache__lu_bytes_
push 0xa3
push ecx
call fcn.0041ef10
add esp, 4
push eax
mov ebx, 0x2000002
mov ecx, str..GetGUIDInternal.cpp
call fcn.0041f0d0
add esp, 0x10
jmp 0x41ff3a
cmp dword [esp + 0x2c], 8
mov eax, dword [esp + 0x18]
mov byte [edi + 0x24], bl
jae 0x420006
lea eax, [esp + 0x18]
push eax
push str.GETGUID:get_GUID_from_cache__S_
push 0xa8
push ecx
call fcn.0041ef10
add esp, 4
push eax
mov ebx, 0x2000040
mov ecx, str..GetGUIDInternal.cpp
call fcn.0041f0d0
add esp, 0x10
push edi
push str.GETGUID:GUID_is__s
push 0xa9
push ecx
call fcn.0041ef10
add esp, 4
push eax
mov ecx, str..GetGUIDInternal.cpp
call fcn.0041f0d0
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0x2c], 8
jb 0x42006a
mov eax, dword [esp + 0x18]
push eax
call fcn.0045061f
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
mov ecx, dword [esp + 0x24]
xor ecx, esp
call fcn.004504a7
mov esp, ebp
pop ebp
ret