Function at 0x47f260
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov esi, dword [ebp + 8]
mov eax, dword [0x540010]
xor eax, ebp
mov dword [esp + 0x88], eax
pcmpeqd xmm0, xmm0
lea edi, [esp + 0x10]
movdqa xmmword [edi + 0x20], xmm0
movdqa xmmword [edi + 0x10], xmm0
movdqa xmmword [edi], xmm0
lea ebx, [esp + 0x50]
push 0x369
push str.file_util_win.cc
push str.CreateDirectoryAndGetError
push ebx
call fcn.00492120
add esp, 0x10
mov ecx, edi
push 0
push ebx
call fcn.00486fa0
cmp byte [esi + 0xb], 0
mov ebx, esi
jns 0x47f2c6
mov ebx, dword [esi]
mov edi, dword [ebp + 0xc]
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x47f2f8
mov bl, 1
test al, 0x10
jne 0x47f396
test edi, edi
je 0x47f2e9
mov dword [edi], 0xfffffff7
push 0x50
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor ebx, ebx
jmp 0x47f396
xor eax, eax
dec eax
lea edi, [esp + 4]
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov ecx, esi
push edi
call fcn.00494560
movzx eax, byte [esi + 0xb]
mov ecx, esi
test al, al
jns 0x47f31e
mov eax, dword [esi + 4]
mov ecx, dword [esi]
test eax, eax
js 0x47f47c
je 0x47f330
test ecx, ecx
je 0x47f475
mov dword [esp], ebx
movzx ebx, byte [esp + 0xf]
test bl, bl
cmovs ebx, dword [esp + 8]
mov edx, dword [esp + 4]
cmovns edx, edi
test ebx, ebx
js 0x47f47c
je 0x47f358
test edx, edx
je 0x47f475
cmp ebx, eax
jne 0x47f3b7
test ebx, ebx
je 0x47f3b7
xor ebx, ebx
movzx edi, word [edx + ebx*2]
cmp di, word [ecx + ebx*2]
jne 0x47f3bb
inc ebx
cmp eax, ebx
jne 0x47f362
mov eax, 0xfffffffc
mov edi, 2
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x47f384
mov dword [ecx], eax
push edi
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor ebx, ebx
lea ecx, [esp + 4]
call fcn.00493ef0
lea ecx, [esp + 0x10]
call fcn.00487010
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.004e0685
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp ebx, eax
je 0x47f371
push dword [ebp + 0xc]
lea eax, [esp + 8]
push eax
call fcn.0047f260
add esp, 8
test al, al
je 0x47f38b
push 0
push dword [esp + 4]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov bl, 1
test eax, eax
jne 0x47f38d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
cmp eax, 0xb7
jne 0x47f45a
pcmpeqd xmm0, xmm0
lea eax, [esp + 0x50]
movdqa xmmword [eax + 0x20], xmm0
movdqa xmmword [eax + 0x10], xmm0
movdqa xmmword [eax], xmm0
lea eax, [esp + 0x40]
push 0x24e
push str.file_util_win.cc
push str.DirectoryExists
push eax
call fcn.00492120
add esp, 0x10
lea ecx, [esp + 0x50]
push 0
lea eax, [esp + 0x44]
push eax
call fcn.00486fa0
cmp byte [esi + 0xb], 0
jns 0x47f43a
mov esi, dword [esi]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, eax
lea ecx, [esp + 0x50]
call fcn.00487010
cmp esi, 0xffffffff
je 0x47f45a
and esi, 0x10
jne 0x47f38d
cmp dword [ebp + 0xc], 0
je 0x47f384
push edi
call fcn.0047d960
add esp, 4
mov ecx, dword [ebp + 0xc]
jmp 0x47f382
push str....._third_partylibc_srcinclude_string_view:313:_assertion___len__0____s___nullptr_failed:_string_view::string_view__CharT___size_t_:_received_nullptr_n
jmp 0x47f481
push str....._third_partylibc_srcinclude_string_view:311:_assertion___len___static_cast_size_type__numeric_limits_difference_type_::max____failed:_string_view::string_view__CharT___size_t_:_length_does_not_fit_in_difference_type_n
push 0x521354
call fcn.0044d640
int3