// // __acrt_call_reportfault from 0x180132b88 to 0x180132ce3 (347 bytes) // // 3 xrefs: // > abort @ 0x180132aea // > _invoke_watson @ 0x180132de5 // > @ 0x1802030ec // // 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 _acrt_call_reportfault(int a1, unsigned int a2, unsigned int a3) { ULONG64 Rip; // r14 struct _IMAGE_RUNTIME_FUNCTION_ENTRY *v7; // rax BOOL v8; // edi unsigned __int64 ImageBase; // [rsp+40h] [rbp-C0h] BYREF struct _EXCEPTION_POINTERS ExceptionInfo; // [rsp+48h] [rbp-B8h] BYREF unsigned __int64 EstablisherFrame; // [rsp+58h] [rbp-A8h] BYREF PVOID HandlerData; // [rsp+60h] [rbp-A0h] BYREF _QWORD v13[20]; // [rsp+70h] [rbp-90h] BYREF struct _CONTEXT ContextRecord; // [rsp+110h] [rbp+10h] BYREF DWORD64 retaddr; // [rsp+608h] [rbp+508h] __int64 v16; // [rsp+610h] [rbp+510h] BYREF if ( a1 != -1 ) sub_180123B7C(); memset(v13, 0, 0x98u); memset(&ContextRecord, 0, sizeof(ContextRecord)); ExceptionInfo.ExceptionRecord = (PEXCEPTION_RECORD)v13; ExceptionInfo.ContextRecord = &ContextRecord; RtlCaptureContext(&ContextRecord); Rip = ContextRecord.Rip; v7 = RtlLookupFunctionEntry(ContextRecord.Rip, &ImageBase, nullptr); if ( v7 ) RtlVirtualUnwind(0, ImageBase, Rip, v7, &ContextRecord, &HandlerData, &EstablisherFrame, nullptr); ContextRecord.Rip = retaddr; v13[0] = __PAIR64__(a3, a2); ContextRecord.Rsp = (DWORD64)&v16; v13[2] = retaddr; v8 = IsDebuggerPresent(); SetUnhandledExceptionFilter(nullptr); if ( !UnhandledExceptionFilter(&ExceptionInfo) && !v8 && a1 != -1 ) sub_180123B7C(); }