// // IsInExceptionSpec from 0x180126d34 to 0x180126e21 (237 bytes) // // 3 xrefs: // > FindHandler<__FrameHandler3> @ 0x180125e40 // > FindHandler<__FrameHandler3> @ 0x1801260ca // > @ 0x180202960 // // 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 // char __fastcall IsInExceptionSpec(__int64 pCatchableTypeArray, const struct _s_ESTypeList *a2) { struct EHExceptionRecord *v3; // r13 char v4; // r15 int i; // esi int *v6; // r12 __int64 v7; // rcx __int64 ThrowImageBase; // rax int v9; // r14d __int64 v10; // rax ThrowInfo *pThrowInfo; // rbx __int64 v12; // rdi __int64 v13; // rcx __int64 ImageBase; // rax v3 = (struct EHExceptionRecord *)pCatchableTypeArray; if ( !a2 ) abort(); v4 = 0; for ( i = 0; i < a2->nCount; ++i ) { v6 = (int *)(GetThrowImageBase(pCatchableTypeArray) + v3->params.pThrowInfo->pCatchableTypeArray + 4LL); ThrowImageBase = GetThrowImageBase(v7); pCatchableTypeArray = v3->params.pThrowInfo->pCatchableTypeArray; v9 = *(_DWORD *)(ThrowImageBase + pCatchableTypeArray); if ( v9 > 0 ) { while ( 1 ) { v10 = GetThrowImageBase(pCatchableTypeArray); pThrowInfo = v3->params.pThrowInfo; v12 = *v6 + v10; ImageBase = GetImageBase(v13); if ( (unsigned int)TypeMatchHelper<__FrameHandler3>(ImageBase + 20LL * i + a2->dispTypeArray, v12, pThrowInfo) ) break; --v9; ++v6; if ( v9 <= 0 ) goto LABEL_8; } v4 = 1; } LABEL_8: ; } return v4; }