{
  void **src_ptr = (void**)(_SOURCE_PTR);
typedef struct _sigjmp_buf { int _sjb[11 + 1]; } sigjmp_buf[1];
typedef struct _jmp_buf { int _jb[11 + 1]; } jmp_buf[1];
void _longjmp(jmp_buf, int) __attribute__((__noreturn__));
int _setjmp(jmp_buf);
void longjmp(jmp_buf, int) __attribute__((__noreturn__));
void longjmperror(void);
int setjmp(jmp_buf);
void siglongjmp(sigjmp_buf, int) __attribute__((__noreturn__));
int sigsetjmp(sigjmp_buf, int);
  _SAVE_RVARS
  _push_exception_context (&_local_context);
  if (setjmp(*(jmp_buf*)(&_local_context.jmpbuf)) > 0) {
    extern void* _exception_source;
    _RESTORE_RVARS
    *src_ptr = (void*)_exception_source;
  } else {
    *src_ptr = NULL;
  }
}
