// semmle-extractor-options: --microsoft

void ProbeFunction(...);
void sink(...);

void f_cpp() {
  int x, y = 0;
  __try {
    ProbeFunction(0);
    x = y;
    ProbeFunction(0);
  }
  __except (0) {
    sink(x);
  }
}

void g_cpp() {
  int x, y = 0;
  __try {
    ProbeFunction(0);
    x = y;
    ProbeFunction(0);
  }
  __finally {
    sink(x);
  }
}

void AfxThrowMemoryException();

void h_cpp(int b) {
  int x = 0;
    __try {
        if (b) {
            AfxThrowMemoryException();
        }
    }
    __except (1) {
        sink(x);
    }
}

void throw_cpp(int b) {
  int x = 0;
    __try {
        if (b) {
            throw 1;
        }
    }
    __except (1) {
        sink(x);
    }
}