// // common_assert_to_stderr from 0x1801313d8 to 0x180131527 (335 bytes) // // 3 xrefs: // > _wassert @ 0x1801315bd // > @ 0x180202eb8 // > @ 0x180202ec4 // // 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 // void __fastcall __noreturn common_assert_to_stderr(__int64 a1, __int64 a2, int a3) { char *StdHandle; // rax void *v7; // rbx __int64 v8; // rax FILE *v9; // rax FILE *v10; // rax int v11; // [rsp+28h] [rbp-D8h] DWORD NumberOfCharsWritten; // [rsp+30h] [rbp-D0h] BYREF int v13; // [rsp+38h] [rbp-C8h] BYREF __int64 v14; // [rsp+40h] [rbp-C0h] BYREF __int64 v15; // [rsp+48h] [rbp-B8h] BYREF __int64 v16; // [rsp+50h] [rbp-B0h] BYREF FILE *v17; // [rsp+58h] [rbp-A8h] BYREF _WORD Buffer[576]; // [rsp+60h] [rbp-A0h] BYREF v15 = a1; v14 = a2; v13 = a3; StdHandle = (char *)GetStdHandle(0xFFFFFFF4); v7 = StdHandle; if ( (unsigned __int64)(StdHandle - 1) <= 0xFFFFFFFFFFFFFFFDuLL && GetFileType(StdHandle) == 2 ) { v11 = a3; if ( sprintf_s((char *const)Buffer, 0x240u, L"Assertion failed: %Ts, file %Ts, line %d\n", a1, a2, v11) >= 0 ) { v8 = -1; do ++v8; while ( Buffer[v8] ); NumberOfCharsWritten = 0; if ( WriteConsoleW(v7, Buffer, v8, &NumberOfCharsWritten, nullptr) ) abort(); } } if ( (HIDWORD(_acrt_iob_func(2u)->_base) & 0x4C0) == 0 ) { v9 = _acrt_iob_func(2u); setvbuf(v9, nullptr, 4, 0); } v16 = sub_180131548(0); v17 = _acrt_iob_func(2u); sub_180131528((unsigned int)&v17, (unsigned int)&v16, (unsigned int)&v15, (unsigned int)&v14, (__int64)&v13); v10 = _acrt_iob_func(2u); fflush(v10); abort(); }