// // raise from 0x180139634 to 0x18013989e (618 bytes) // // 3 xrefs: // > common_assert_to_message_box @ 0x180130ebe // > abort @ 0x180132ab7 // > @ 0x1802037f4 // // 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 // int __cdecl raise(int Signal) { _QWORD *v2; // r13 char v3; // r14 int v4; // ecx int v5; // ecx int v6; // ecx int v7; // ecx __int64 *v8; // rdi _QWORD *v9; // rax __int64 v11; // rax __int64 v12; // rcx __int64 v13; // rsi int v14; // r12d __int64 v15; // rax __int64 v16; // rcx int v17; // [rsp+78h] [rbp+10h] __int64 v18; // [rsp+80h] [rbp+18h] v2 = nullptr; v17 = 0; v3 = 1; if ( Signal != 2 ) { switch ( Signal ) { case 4: goto LABEL_14; case 6: goto LABEL_8; case 8: case 11: LABEL_14: v9 = (_QWORD *)_acrt_getptd_noexit(); v2 = v9; if ( !v9 ) return -1; v11 = *v9; v12 = v11 + 192; while ( v11 != v12 ) { if ( *(_DWORD *)(v11 + 4) == Signal ) goto LABEL_21; v11 += 16; } v11 = 0; LABEL_21: if ( v11 ) { v8 = (__int64 *)(v11 + 8); v3 = 0; goto LABEL_28; } break; default: if ( Signal == 15 || (unsigned int)(Signal - 21) <= 1 ) goto LABEL_8; break; } *errno() = 22; invalid_parameter_noinfo(); return -1; } LABEL_8: v4 = Signal - 2; if ( v4 ) { v5 = v4 - 4; if ( !v5 ) { LABEL_24: v8 = &qword_1801F55B0; goto LABEL_28; } v6 = v5 - 9; if ( v6 ) { v7 = v6 - 6; if ( v7 ) { if ( v7 != 1 ) { v8 = nullptr; goto LABEL_28; } goto LABEL_24; } v8 = &qword_1801F55A8; } else { v8 = &qword_1801F55B8; } } else { v8 = &qword_1801F55A0; } LABEL_28: v18 = 0; if ( v3 ) sub_1801346AC(3); v13 = *v8; if ( v3 ) v13 = __ROR8__(_security_cookie ^ v13, _security_cookie & 0x3F); if ( v13 == 1 ) { v14 = 2320; goto LABEL_44; } if ( !v13 ) { if ( v3 ) sub_180134700(3); exit(3); } v14 = 2320; if ( (unsigned int)Signal > 0xB || !_bittest(&v14, Signal) ) goto LABEL_38; v18 = v2[1]; v2[1] = 0; if ( Signal == 8 ) { v17 = *(_DWORD *)(_acrt_getptd() + 16); *(_DWORD *)(_acrt_getptd() + 16) = 140; LABEL_38: if ( Signal == 8 ) { v15 = *v2 + 48LL; v16 = *v2 + 192LL; while ( v15 != v16 ) { *(_QWORD *)(v15 + 8) = 0; v15 += 16; } goto LABEL_44; } } *v8 = _security_cookie; LABEL_44: if ( v3 ) sub_180134700(3); if ( v13 != 1 ) { if ( Signal == 8 ) _acrt_getptd(); _guard_dispatch_icall_fptr(); if ( (unsigned int)Signal <= 0xB && _bittest(&v14, Signal) ) { v2[1] = v18; if ( Signal == 8 ) *(_DWORD *)(_acrt_getptd() + 16) = v17; } } return 0; }