// // __acrt_mbs_to_wcs_cp<__crt_win32_buffer_internal_dynamic_resizing> from 0x180128f50 to 0x1801290c6 (374 bytes) // // 5 xrefs: // > _stat64i32 @ 0x180129904 // > _wsetlocale_set_cat @ 0x180139f19 // > __acrt_SetEnvironmentVariableA @ 0x1801410a3 // > __acrt_SetEnvironmentVariableA @ 0x180141116 // > @ 0x180202a5c // // 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 // __int64 __fastcall __acrt_mbs_to_wcs_cp<__crt_win32_buffer_internal_dynamic_resizing>( _BYTE *a1, __int64 a2, unsigned int a3) { unsigned int v3; // ebx void *v7; // rax unsigned int v8; // edx int v9; // eax __int64 v10; // r14 DWORD LastError; // eax __int64 v12; // rax __int64 v13; // rcx __int64 v14; // rax int v15; // eax v3 = 0; if ( !a1 ) { if ( *(_BYTE *)(a2 + 40) ) { free_base(*(void **)(a2 + 16)); *(_BYTE *)(a2 + 40) = 0; } *(_QWORD *)(a2 + 16) = 0; *(_QWORD *)(a2 + 24) = 0; goto LABEL_5; } if ( *a1 ) { v9 = _acrt_MultiByteToWideChar(a3, 9, a1); v10 = v9; if ( v9 ) { if ( (unsigned __int64)v9 > *(_QWORD *)(a2 + 24) ) { if ( *(_BYTE *)(a2 + 40) ) { free_base(*(void **)(a2 + 16)); *(_BYTE *)(a2 + 40) = 0; } v12 = (__int64)malloc_base(2 * v10); *(_QWORD *)(a2 + 16) = v12; v13 = 0; v14 = -v12; v8 = v14 == 0 ? 0xC : 0; if ( (v14 == 0 ? 0xC : 0) == 0 ) v13 = v10; *(_BYTE *)(a2 + 40) = v8 == 0; *(_QWORD *)(a2 + 24) = v13; if ( (v14 == 0 ? 0xC : 0) != 0 ) return v8; } v15 = _acrt_MultiByteToWideChar(a3, 9, a1); if ( v15 ) { *(_QWORD *)(a2 + 32) = v15 - 1LL; return v3; } } LastError = GetLastError(); _acrt_errno_map_os_error(LastError); return (unsigned int)*errno(); } if ( !*(_QWORD *)(a2 + 24) ) { if ( *(_BYTE *)(a2 + 40) ) { free_base(*(void **)(a2 + 16)); *(_BYTE *)(a2 + 40) = 0; } v7 = malloc_base(2u); *(_QWORD *)(a2 + 16) = v7; v8 = v7 == nullptr ? 0xC : 0; *(_BYTE *)(a2 + 40) = v8 == 0; *(_QWORD *)(a2 + 24) = v8 == 0; if ( (v7 == nullptr ? 0xC : 0) != 0 ) return v8; } **(_WORD **)(a2 + 16) = 0; LABEL_5: *(_QWORD *)(a2 + 32) = 0; return v3; }