// // __acrt_wcs_to_mbs_cp<__crt_win32_buffer_internal_dynamic_resizing> from 0x1801398b4 to 0x180139a3e (394 bytes) // // 2 xrefs: // > _wsetlocale_set_cat @ 0x180139ff9 // > @ 0x180203800 // // 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_wcs_to_mbs_cp<__crt_win32_buffer_internal_dynamic_resizing>( const WCHAR *a1, __int64 a2, UINT a3) { unsigned int v3; // ebx void *v7; // rax unsigned int v8; // edx int v9; // eax size_t v10; // rbp DWORD LastError; // eax unsigned __int64 v12; // rcx __int64 v13; // rax __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_WideCharToMultiByte(a3, 0, a1, -1, nullptr, 0, nullptr, nullptr); v10 = v9; if ( v9 ) { v12 = *(_QWORD *)(a2 + 24); if ( v9 > v12 ) { if ( *(_BYTE *)(a2 + 40) ) { free_base(*(void **)(a2 + 16)); *(_BYTE *)(a2 + 40) = 0; } v13 = (__int64)malloc_base(v10); *(_QWORD *)(a2 + 16) = v13; v12 = 0; v14 = -v13; v8 = v14 == 0 ? 0xC : 0; if ( (v14 == 0 ? 0xC : 0) == 0 ) v12 = v10; *(_BYTE *)(a2 + 40) = v8 == 0; *(_QWORD *)(a2 + 24) = v12; if ( (v14 == 0 ? 0xC : 0) != 0 ) return v8; } v15 = _acrt_WideCharToMultiByte(a3, 0, a1, -1, *(CHAR **)(a2 + 16), v12, nullptr, nullptr); 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(1u); *(_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; } **(_BYTE **)(a2 + 16) = 0; LABEL_5: *(_QWORD *)(a2 + 32) = 0; return v3; }