// // _wfullpath from 0x180134c08 to 0x180134cb9 (177 bytes) // // 3 xrefs: // > is_usable_drive_or_unc_root @ 0x1801297aa // > is_usable_drive_or_unc_root @ 0x1801297d9 // > @ 0x1802032cc // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // wchar_t *__cdecl wfullpath(wchar_t *Buffer, const wchar_t *Path, size_t BufferCount) { wchar_t *v3; // rbx wchar_t *v5; // rdi unsigned int v6; // eax wchar_t *v8; // [rsp+20h] [rbp-30h] BYREF size_t v9; // [rsp+28h] [rbp-28h] void *Block; // [rsp+30h] [rbp-20h] size_t v11; // [rsp+38h] [rbp-18h] __int64 v12; // [rsp+40h] [rbp-10h] char v13; // [rsp+48h] [rbp-8h] v3 = nullptr; if ( Path && *Path ) { v12 = 0; v13 = 0; if ( Buffer ) { v8 = Buffer; v9 = BufferCount; Block = Buffer; v11 = BufferCount; if ( !(unsigned int)unknown_libname_66(Path, (__int64)&v8) ) return Buffer; } else { v8 = nullptr; v9 = 0; Block = nullptr; v11 = 0; __acrt_get_full_path_name_wide<__crt_win32_buffer_public_dynamic_resizing>(Path, (__int64)&v8); v5 = (wchar_t *)__crt_win32_buffer::detach((__int64 *)&v8); if ( v13 ) free(Block); return v5; } } else { v6 = 0x7FFFFFFF; if ( BufferCount < 0x7FFFFFFF ) v6 = BufferCount; return (wchar_t *)sub_18013C0B4(Buffer, v6); } return v3; }